介紹 當用戶雙擊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的新特性,所以如果你的元素點擊事件不止觸發一次,這可能是個解決方案哦。多麼神奇的方法啊,如有任何疑問請聯系我。