This question already has answers here:
Why does click event handler fire immediately upon page load?
                                
                                    (4个答案)
                                
                        
                4年前关闭。
            
        

关于此主题也有类似的问题,但是他们的答案对我的问题没有帮助。

我试图使用jQuery的on("click")触发一个函数,该函数只是更改被单击的id的类。但是该函数在页面加载时被调用,然后如果您单击应该触发该函数的内容,则它将不会。

这是html:

<nav>
    <ul>
        <li id="all" class="tab-current"><a><span>All Departments</span></a></li>
    </ul>
</nav>


这里的js:

var $all = $("#all");
$all.on("click", function(){
    tabClicked("all");
});


我也尝试过这个:

$all.on("click", tabClicked("all"));


这是函数:

function tabClicked(input){
    //do some stuff here
}


有任何想法吗?提前致谢! :)

最佳答案

var $all = $("#all");

$all.on("click", function(){
    tabClicked("all");
});


尝试像这样编辑它。 $(function() {});类似于$(document).ready(),因此放置function(){}而不是$(function() {});

编辑:

由于某些原因,如果script标记位于html中的元素之后,则会触发该事件。我用外部JS等尝试了您的代码-无效。

尝试这样:JSFiddle

编辑2:您应该将处理程序放在$(document).ready()函数中的任何位置,这就是原因。

$( document ).ready(function() {
 var $all = $("#all");
 $all.on("click", function(){
    alert("click");
 });
});

关于javascript - on(“click”,event)触发而无需单击[duplicate],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36400660/

10-14 20:56
查看更多