你如何覆盖jQuery选择元素的`click`事件?

时间:2016-04-20 23:01:08

标签: javascript jquery

在我的程序中,我正在尝试修改jQuery元素的click事件,我注意到它实际上是 添加 一个新事件。所以如果我这样做

$myelem = $('.nav-item'); 
$myelem.click(function(){
    console.log("foo"); 
});
$myelem.click(function(){
    console.log("bar"); 
});

然后单击类nav-item日志的元素

  

foo

     

如何重写这个以便第二个定义覆盖之前的点击事件?

1 个答案:

答案 0 :(得分:3)

如果您无法先修改,则可以使用off()进行修改,因为它比 .unbind() 更为可取:

$myelem = $('.nav-item'); 
$myelem.click(function(){
    console.log("foo"); 
});
$myelem.off('click').on('click',function(){
    console.log("bar"); 
});

正如@CMedina建议的那样,您还应该使用$myelem.on("click",function(){....}),因为.click()已经在后台呼叫.on('click',function..);

检查以下代码段

$myelem = $('.nav-item');
$myelem.click(function() {
  console.log("foo");
});
$myelem.off('click').on('click', function() {
  console.log("bar");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="nav-item">Navigation</div>