我在jQuery中有一个click事件。所需的行为是每次单击链接时执行的功能。但是,实际行为是页面加载,然后函数执行一次而不再执行。违规代码如下。谢谢!
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<style>
#sub {
position:fixed;
z-index:999;
margin-top:180px;
margin-left:200px;
display:none;}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
function showdiv(divid) {
$('.menu').hide();
$('#'+divid).fadeToggle('slow');
};
$(document).ready(function(){
$('a#opt1').click(showdiv('sub'));
$('a#opt2').click(function(){$('.menu').hide();});
});
</script>
</head>
<body>
<li><a id="opt1" href="#">Option1</a></li>
<li><a id="opt2" href="#">Option2</a></li>
</ul>
<ul id="sub">
<li><a href="#">Mission</a></li>
<li><a href="#">Press</a></li>
</ul>
答案 0 :(得分:1)
$('a#opt1').click(showdiv('sub'));
将立即运行函数showdiv
,将返回值设置为所谓的onclick
(在这种情况下,没有任何内容,因此您的点击处理程序似乎不起作用)。
你应该将它包装在一个匿名函数中。
$('a#opt1').click(function() { showdiv('sub') });
答案 1 :(得分:1)
您需要将函数包装在匿名函数中:
$('a#opt1').click(function() {
showdiv('sub');
});
答案 2 :(得分:1)
您应该将函数引用传递给.click
。在您的情况下,您传递了函数的返回值而不是实际函数。长话短说,你应该用function(){}
包裹它:
$('a#opt1').click(function(){
showdiv('sub');
});
.click
上的jQuery documentation实际上声明您必须传递一个函数,但您在示例中传递了undefined
。这就是为什么它只执行一次。