(我已经包括这里的jsfiddle:http://jsfiddle.net/CunUK/)
我怀疑这是jQuery中on和off方法的预期行为,但为了万一有些东西我错过了,更重要的是,如果有人可以建议某种工作,我会在这里演出这个问题:
1)对于动态(AJAX插入元素)的目的,我绑定我的'on'方法到$(document)。
2)因为我使用每个按钮绑定传递唯一数据,所以我将它们分离为单独的绑定。
$.fn.myButtonsFunction = function(event){
// Do some stuff with event.data['foobar'],
// Do some other stuff
this.siblings("a").addBack().off("click.myButtons", myButtonsFunction);
}
$(document).on("click.myButtons", "a.foo-button", {foobar: uniqueValue}, myButtonsFunction);
$(document).on("click.myButtons", "a.bar-button", {foobar: anotherUniqueValue}, myButtonsFunction);
我想删除“点击”只是针对在myButtonsFunction的选择按钮结合上,而不是已绑定的所有按钮。
下面是一些HTML来举例说明按钮如何相对彼此发生。
<li class="container">
<a href="#" class="foo-button">Foo Button</a>
<a href="#" class="bar-button">Bar Button</a>
</li>
<li class="container">
<a href="#" class="foo-button">Foo Button</a>
<a href="#" class="bar-button">Bar Button</a>
</li>
<li class="container">
<a href="#" class="foo-button">Foo Button</a>
<a href="#" class="bar-button">Bar Button</a>
</li>
长话短说,我只是想删除的事件处理程序的按钮(牢记因要求1和上述2我有限制)的一个容器中。
目前还不完全清楚你想达到什么目的。如果我按下第一个容器中的.foo-button,你想从哪个按钮中删除事件处理程序?从第一个容器中的.bar-button?或者其他两个容器中的所有按钮? –
我想从中删除事件处理函数的按钮是在myButtonsFunction中定位的按钮:this.siblings(“a”)。addBack() 这包括正在按下的按钮以及容器旁边的任何按钮。 –