我正在为jQuery编写一个插件,我想知道是否有办法只调用一次影响插件任何实例的方法。
更具体地说,我的代码如下所示:
var body = $('body');
body.on(
'click',
'selector',
function(e)
{
console.log("Do some stuff with my plugin");
}
);
在上面的代码中,“console.log(”用我的插件做一些事情“);”正在运行相同数量的插件实例。
例如,如果我有以下代码:
<body>
<a href="#" class="selector_1">Click me</a>
<a href="#" class="selector_2">Click me</a>
<a href="#" class="selector_3">Click me</a>
<script type="text/javascript">
jQuery(document).ready(
function($)
{
$('.selector_1').myPlugin();
$('.selector_2').myPlugin();
$('.selector_3').myPlugin();
}
);
</script>
</body>
现在,如果我点击文档中的任何链接,我会在控制台中收到三次“使用我的插件执行一些操作”的消息,因为此事件已注册三次。
那么,对于任何数量的插件实例,有没有办法只运行一次代码?
注意:要构建我的jQuery插件,我使用了this skeleton
答案 0 :(得分:1)
最简单的方法是在body元素中添加一个标志,说明插件已经初始化,并在再次绑定事件之前检查一下:
var body = $('body');
// If plugin has not already bound event
if (!body.data('myplugin-init')) {
body.on(
'click',
'selector',
function(e)
{
console.log("Do some stuff with my plugin");
}
);
// Flag that event has been bound
body.data('myplugin-init', true);
}