我有一个ajax应用程序,将运行每个交互功能。我希望能够每次运行我的设置功能,以便我的所有设置代码保持封装。然而,绑定元素不止一次意味着处理程序将运行多次,这显然是不可取的。有没有一种优雅的方式在jQuery中多次调用一个元素上的绑定而不会多次调用这个处理函数?在jQuery中,有没有办法只绑定一次点击?
回答
你可以用one()
功能的事件附加到document
:
$(document).one('click', function(e) {
// initialization here
});
一旦运行,该事件处理程序再次删除,因此不会再次运行。但是,如果您需要初始化以在之前运行某个其他元素的点击事件,我们将不得不考虑其他元素。然后,使用mousedown
而不是click
可能会奏效,因为mousedown事件在点击事件之前触发。
用户jQuery one
函数像Tom说的那样,但是每次绑定之前都要绑定处理程序。它有助于将事件处理程序分配给一个变量,而不是使用匿名函数。
var handler = function(e) { // stuff };
$('#element').unbind('click', handler).one('click', handler);
//elsewhere
$('#element').unbind('click', handler).one('click', handler);
您还可以做.unbind('click')
删除所有附加到元素的点击处理程序。
Chetan Sastry的答案就是你想要的。基本上只需调用$(元素).unbind(event);在每个事件之前。
所以,如果你有一个像loadAllButtonClicks(功能),它包含所有你的页面上的每个按钮的
$(element).on("click", function(){});
方法,并在运行,每一个按钮被点击的时间,这显然会产生超过每个按钮一个事件。为了解决这个问题之前每
$(element).on("click", function(){});
添加
$(element).unbind(event);
,它会解除绑定所有事件到该元素,然后添加一个click事件。
如果解除绑定不起作用,也可以使用.off()。确保给.off选择和事件最初提供的。对()中的那些完全一致:
$("div.selector").off("click", "a.another_selector");
$("div.selector").on("click", "a.another_selector", function(e){
这是我在解决同阿贾克斯重装问题什么工作。
我喜欢这个,因为$(元素).unbind(event);解决方案将从元素中删除所有类型的事件(例如点击),而这种方法只是删除与所选择的问题相关的事件,即使它们共享相同的事件类型,也会留下其他事件。 – 2015-01-18 17:06:02
- 1. 有没有办法从另一页触发jquery点击功能
- 2. 有没有办法限制用户在java中点击一次jbutton
- 3. jQuery:有没有办法将'点击'事件变成双击?
- 4. 有没有办法绑定到Keyboard.FocusedElement?
- 5. 有没有办法在jQuery/JavaScript中将所有双击事件绑定到它们的单击等效项?
- 6. 点击事件没有触发第一次点击jquery
- 7. 有没有办法找出用jquery点击了什么元素?
- 8. 有没有办法让jQuery UI Datepicker不可点击?
- 9. 有没有办法在Xcode 4中拥有VIM键盘绑定?
- 10. 有没有办法保证蚂蚁依赖只运行一次?
- 11. 有没有办法只存储一次字段值?
- 12. 有没有办法只回声一次,而不是重复?
- 13. 有没有办法在jQuery中永久定义一个函数?
- 14. 有没有办法在jQuery中删除所有名称空间的绑定?
- 15. 有没有办法传递上下文来绑定jQuery?
- 16. 有没有办法将一个方法绑定到ListBox的DataTemplate?
- 17. 有没有办法在UiAutomator中点击UiObject的左下角?
- 18. 有没有办法让缩图在dropzone中可点击?
- 19. 有没有办法在JavaScript中模拟点击警报?
- 20. 有没有办法检测在EditText中点击的字
- 21. 有没有办法让链接在OSX终端中可点击?
- 22. jquery |在点击动作只有第一次作品
- 23. 有没有办法一次清除所有JavaScript定时器?
- 24. 有没有办法做到这一点?
- 25. 有没有办法将点击触发另一个区域(不是你点击)
- 26. 有没有办法在sql中只计算一次重复计算?
- 27. 有没有办法强制在Symfony2中进行表单绑定?
- 28. 有没有办法在代码中遵循绑定?
- 29. 点击事件没有绑定?
- 30. 没有AJAX调用live() - 绑定点击
你错过了'';'在那里。 – Ben 2010-06-01 04:14:02
谢谢本,修理... – 2010-06-01 04:15:36
不知道这个。 – DMin 2010-06-01 04:27:31