我有以下代码;
$("#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;
}