我有一個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. 有沒有辦法使SegmentedControl再次點擊一次選擇 - iOS
- 2. 有沒有辦法在ExpressJS中只渲染一次視圖?
- 3. 有沒有辦法在按鈕上點擊兩次? php,javascript
- 4. 有沒有辦法從另一頁觸發jquery點擊功能
- 5. 有沒有辦法限制用戶在java中點擊一次jbutton
- 6. jQuery:有沒有辦法將'點擊'事件變成雙擊?
- 7. 有沒有辦法將點擊事件綁定到Three.js中的對象
- 8. 有沒有辦法綁定到Keyboard.FocusedElement?
- 9. 有沒有辦法一次指定CMakeList中的所有GDCM庫?
- 10. 有沒有辦法在jQuery/JavaScript中將所有雙擊事件綁定到它們的單擊等效項?
- 11. 有沒有辦法找出用jquery點擊了什麼元素?
- 12. 有沒有辦法讓jQuery UI Datepicker不可點擊?
- 13. 有沒有辦法在Xcode 4中擁有VIM鍵盤綁定?
- 14. 點擊事件沒有觸發第一次點擊jquery
- 15. 有沒有辦法只存儲一次字段值?
- 16. 有沒有辦法只回聲一次,而不是重複?
- 17. 有沒有辦法保證螞蟻依賴只運行一次?
- 18. 有沒有辦法只運行一次servlet過濾?
- 19. 有沒有辦法讓window.onload函數只執行一次?
- 20. 有沒有辦法在jQuery中永久定義一個函數?
- 21. 有沒有辦法在jQuery中刪除所有名稱空間的綁定?
- 22. jquery所有選擇器 - 只有一次點擊div
- 23. 有沒有辦法傳遞上下文來綁定jQuery?
- 24. 有沒有辦法將一個方法綁定到ListBox的DataTemplate?
- 25. 只允許點擊一次,沒有雙擊
- 26. 有沒有辦法在視圖中使URL可點擊?
- 27. 有沒有辦法讓縮圖在dropzone中可點擊?
- 28. 有沒有辦法檢測在EditText中點擊的字
- 29. 有沒有辦法在UiAutomator中點擊UiObject的左下角?
- 30. 有沒有辦法在JavaScript中模擬點擊警報?
你錯過了'';'在那裏。 – Ben 2010-06-01 04:14:02
謝謝本,修理... – 2010-06-01 04:15:36
不知道這個。 – DMin 2010-06-01 04:27:31