0

我有以下代码;

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

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

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

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

4

5 回答 5

1

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

基本的 jsFiddle 示例

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

于 2012-12-04T20:24:59.183 回答
0

你总是可以先解绑点击功能:http: //api.jquery.com/unbind/

于 2012-12-04T20:27:57.970 回答
0

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

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

于 2012-12-04T20:28:10.153 回答
0

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

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

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

于 2012-12-04T20:28:48.957 回答
0

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

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

$("#btnChangeEvent").click(function(){
  isAnotherEvent = true;
}
于 2012-12-04T20:31:17.363 回答