有沒有辦法將one()
用於事件委託?如on()
或live()
,以便它將應用於不在綁定時創建的DOM元素?對一些尚未創建的元素使用.one()(如.live())
4
A
回答
1
第二兩種形式,jQuery中引入1.7,是相同的。對()不同之處在於處理程序的第一次事件發生在委派元件之後去除,選擇是否匹配任何或不。例如:當執行代碼
$("#foo").one("click", function() {
alert("This will be displayed only once.");
});
$("body").one("click", "#foo", function() {
alert("This displays if #foo is the first thing clicked in the body.");
});
後,元件上的點擊與ID foo將顯示警報。隨後的點擊不會執行任何操作。
這意味着,當你使用形式$(el).one('click', '.selector', handler)
它會像live
- 事件處理程序綁定到el
(其在DOM存在),但該事件處理程序將只在點擊上執行無論您在撥打.one()
時是否存在該元素,
編輯:看來,jQuery的這方面的文檔是錯誤的 - 至少,我解釋它的方式。根據上面的alert
,
「如果#foo是在主體中點擊的第一件東西,就會顯示」。
這讓我覺得,如果別的點擊體內第一,事件處理程序將被刪除,不會再次觸發。情況並非如此 - 事件處理程序將一直存在,直到單擊#foo
。
請參閱this fiddle進行演示。
4
是的,有:
// added in jQuery 1.7
// .one(events [, selector] [, data], handler(eventObject))
$("div").one("click", "span", function (e) {
$(this).hide();
});
1
在完全相同的方式.on
$("#to-bind-to").one('event-type', 'delegated-selector', eventFunction);
相關問題
- 1. 關於尚未創建的DOM元素的事件,使用Javascript?
- 2. AngularJS - 如何訪問尚未創建的元素?
- 3. 如何在創建元素時使用jQuery .live調用元素的方法?
- 4. 使用el尚未創建的主幹?
- 5. 將事件綁定到尚未創建的DOM元素(jquery)
- 6. 如何爲尚未創建的對象創建HitTestObject?
- 7. 尚未創建的文件
- 8. 使用jUnit測試尚未創建的類/對象
- 9. 如何對尚未可見的元素執行jQuery操作
- 10. 如何突出「旋轉」時尚的一些元素?
- 11. XML元素未創建
- 12. 發送的對象尚未創建另一個對象的引用......
- 13. 如何創建尚未顯示的對象的圖像
- 14. Ng-init如果數組尚未創建
- 15. 創建新的div的onClick,如果尚未創建
- 16. 創建一個TR元素中的TD元素使用Javascript
- 17. 如何使用jquery live()將元素添加到元素
- 18. 如何使用createDocumentFragment創建這些元素?
- 19. 使用gmail.js創建元素
- 20. Android如何創建僅當它尚未創建的活動
- 21. 在JavaScript中動態創建元素使用EventListener創建元素
- 22. 得到元素尚未發佈頁
- 23. 預製尚未顯示HTML元素?
- 24. MODI.OCR異常:對象尚未初始化並且尚未使用
- 25. 如何鏈接Docker中另一個尚未創建的容器
- 26. 創建尚未解決的承諾es6
- 27. 的SQLite數據庫尚未創建
- 28. 使用javascript在另一個元素內創建span元素
- 29. 如何使用PostgreSQL JSONB_SET()來創建新的深對象元素
- 30. 使用預定數量的某些元素創建矢量
on()你可以使用。 – Thulasiram
是的,這與委託時的()完全相同? – adeneo