JQuery do click events stack



我有以下代码;

$("#myID").click(function () {
    //do something
})

在某些时候,用户对网页另一部分的操作需要更改单击时发生的操作,例如

$("#myID").click(function () {
    //do something different
})  

我的问题是,正确/最有效的方法是什么?目前我只是在实现上面的第二段代码,但这会导致一些奇怪的行为吗?即现在是否会在点击时执行两种不同的操作?还是第二个代码块覆盖了第一个代码块。

它们都将执行,所以不,第二个调用不会覆盖第一个调用。

基本 jsFiddle 示例

正如 pimvdb 所指出的,它们将按照绑定的顺序执行。

您可以随时先解绑点击功能:http://api.jquery.com/unbind/

对,它们"堆叠"。 即 $("#myID") 将维护一个事件处理程序列表,并在单击时执行这两个处理程序。

如果你不再需要原始处理程序,你需要使用$("#myID").off('click')取消绑定它,或者如果你使用的是旧版本的jquery,$("#myID").unbind('click')'。http://api.jquery.com/unbind/

在您的代码中,将执行两次点击。尝试在之前取消绑定点击事件

$("#myID").unbind("click")

http://api.jquery.com/unbind/

您可以添加一个全局变量isAnotherEvent = false然后检查click事件需要执行哪一部分代码,要执行另一部分,只需isAnotherEvent = true

var isAnotherEvent = false;
$("#myID").click(function () {
  if(!isAnotjerEvent){
    //do something
  } else {
    //do something else
  }
})
$("#btnChangeEvent").click(function(){
  isAnotherEvent = true;
}

最新更新