2013-10-07 35 views
2

如果我的页面标题中有一个.click()函数,是否有可能稍后在页面中覆盖它?是否可以在JQuery中更改.click()函数?

例如,如果我有这样的标题:

<script> 
$("document").ready(function() { 
    $("a.lol").click(function() { 
     alert("aaa"); 
    }); 
}); 
</script> 

有没有可能改变$("a.lol")提醒别的东西,而不是提醒“AAA”?

回答

5

试试这个,

$("document").ready(function() { 
    $("a.lol").click(function() { // initially the click event 
     alert("aaa"); 
    }); 
    $("a.lol").off('click');// off the click event 
    $("a.lol").on('click',function() { // again bind new click event with on() 
     alert("new click"); 
    }); 
}); 

阅读​​和off()

+1

这是我的理解是,关闭()将不会删除添加的处理程序与点击() 。从文档:“.off()方法删除使用.on()附加的事件处理程序”。 –

+0

谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! – user2217162

+2

@BrianStephens我刚试过。对我来说工作得很好。如果你[看源代码](http://james.padolsey.com/jquery/#v=1.10.2&fn=jQuery.fn.click),你会发现'.click'只是映射到'.on内部(如'.bind'和'.delegate')。 – Blazemonger

3

您可以使用.unbind(),然后“放回”添加一个新的处理程序。

$("a.lol").unbind('click'); 
1

使用.off()

$("a.lol").off('click'); 

,并重新添加使用.on()

$("a.lol").on('click',functionName); 

$("a.lol").on('click',function() { 
    //code here 
}); 
0

使用$("a.lol").off('click')删除所有点击处理。之后,您可以安装新的。

对于旧版本的jQuery,使用unbind()

0

是的,你将不得不与off()删除当前处理,然后用新的处理程序再次调用点击()。

// Some code 
$("a.lol").off("click") 
$("a.lol").click(function() { 
    alert("ooo"); 
}); 

PS:根据您的使用情况,你也许可以使用one()将触发处理程序只有一次,然后删除自身

相关问题