介紹 當使用者雙擊DOM物件(例如按鈕和連結等)時,對於使用者互動一直是個麻煩的問題。 幸運的是, jQuery 提供了一個相當棒的解決方法。 那就是.one()。
.one()這個方法是做什麼的? 它附加了一個元素事件的處理程序並且每個元素只能執行一次事件處理器函數。
參數 .one( events [, selector ] [, data ], handler(eventObject) )
events 類型: String
•規定新增到元素的一個或多個事件。由空格分隔多個事件。必須是有效的事件。就像“click”和“keydown.myPlugin”一樣。
選擇器參數 參數類型: String
•選擇器字串用於過濾出被選中的元素中能觸發事件的子元素
•如果傳null或省略,當事件到達選定的元素時就會被觸發
資料 參數類型: 任何類型
•該參數的值在事件觸發將會傳遞給的事件處理函數
事件處理函數 參數類型:函數型別
•事件觸發時應該呼叫的函數
•false 也是允許的因為它就是簡單return false;函數的簡寫形式
舉例 複製程式碼
程式碼🎜>$("#saveBttn").one("click", function () {
alert("This will be displayed only once.");
});
程式碼如下:
$("body").one(" click", "#saveBttn", function () {
alert("This displays if #saveBttn is the first thing clicked in the body.");
});上述程式碼關鍵在於:
•當程式碼執行結束時,點選id為saveBtn的元素將會彈出警告框
•之後的點擊將沒有任何反映
程式碼如下:
$("#saveBttn").on("click", function (event) {
alert("This will be displayed only once.");
$(this).off(event);
});
換句話說這和在綁定事件處理函數中明確呼叫off()作用是一樣的
了解更多請點選
jQuery .one()
總結 上面提到的方法是jQuery 1.7的新特性,所以如果你的元素點擊事件不只觸發一次,這可能是個解決方案哦。多麼神奇的方法啊,如有任何疑問請聯絡我。