我有一个需要注册click事件处理程序的jQuery插件:
$.fn.myPlugin = function (options) {
var settings = {
// snipped
};
$.extend(settings, options || {});
$("body").click(function () {
// Do Something
});
// Rest of the plugin
});
问题是多次调用多次注册该函数。由于函数需要保持附加,我不能使用.one()。
如果已附加功能,有没有办法?我可以给它起个名字吗?或者我是否必须使用闭合魔法设置一些布尔标志?
答案 0 :(得分:3)
命名空间您的活动。
$('body').unbind('click.myPlugin').bind('click.myPlugin', function() {
..code...
});
答案 1 :(得分:1)
一个性能良好的非常简单的方法是在body
元素上设置数据元素:
if (!$.data(document.body, 'myPluginRegistered') {
$.data(document.body, 'myPluginRegistered', true);
// do your plugin code here
}
答案 2 :(得分:0)
最简单的可能是你建议的布尔加封闭魔法。或者,您可以获取绑定到“click”对象的所有函数的列表,并查看您附加的函数是否已经存在。
此问题显示了如何获取列表。
List all javascript events wired up on a page using jquery
尽管如此,在我第一次回复之后出现的命名空间建议可能更简单。