JQuery点击事件堆栈

时间:2012-12-04 20:22:13

标签: javascript jquery events

我有以下代码;

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

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

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

我的问题是,这样做的正确/最有效的方法是什么?目前我只是在实现上面的第二块代码,但这会导致一些奇怪的行为吗?也就是说,点击后会有两种不同的动作?或者第二个代码块是否覆盖了第一个代码。

5 个答案:

答案 0 :(得分:1)

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

<强> Basic jsFiddle example

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

答案 1 :(得分:0)

您可以随时取消绑定点击功能:http://api.jquery.com/unbind/

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

在您的代码中,两次点击都会被执行。 尝试在

之前取消绑定点击事件
$("#myID").unbind("click")

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

答案 4 :(得分:0)

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

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

$("#btnChangeEvent").click(function(){
  isAnotherEvent = true;
}