[英]Only register a function with an event once?
我有一個jQuery插件,需要注冊click事件處理程序:
$.fn.myPlugin = function (options) {
var settings = {
// snipped
};
$.extend(settings, options || {});
$("body").click(function () {
// Do Something
});
// Rest of the plugin
});
問題是多個調用多次注冊了該功能。 由於該功能需要保持連接狀態,因此無法使用.one()。
有沒有辦法附加功能? 我可以給它起個名字嗎? 還是我必須使用閉包魔術設置一些布爾標志?
命名事件。
$('body').unbind('click.myPlugin').bind('click.myPlugin', function() {
..code...
});
一種具有良好性能的非常簡單的方法是在body
元素上設置一個數據元素:
if (!$.data(document.body, 'myPluginRegistered') {
$.data(document.body, 'myPluginRegistered', true);
// do your plugin code here
}
最簡單的可能是您建議的布爾加閉包魔術。 或者,您可以獲取綁定到“ click”對象的所有功能的列表,並查看要附加的功能是否已經存在。
此問題顯示了如何獲取列表。
列出所有使用jquery連接到頁面上的JavaScript事件
不過,在我第一次回應后提出的名稱空間建議可能更簡單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.