我正在构建一个lightbox jQuery插件,我遇到了问题,事件触发频繁,因为我在同一页面上有灯箱。也许你知道,如何防止这种情况。这是一个示例代码。
;( function( $, window, document, undefined ){
'use strict';
$.fn.myPlugin = function( options ){
// here are some functions for click and touching
$(document).on('click', '.elem', function(e){
e.preventDefault();
console.log('click');
});
$( document ).on( 'touchstart','.elem', function(e){
console.log('touch');
});
return this;
};
})( jQuery, window, document );
所以如果我现在经常调用我的插件,就像我想要的那样:
$('.elem1').myPlugin();
...
$('.elem4').myPlugin();
点击或触摸console.log会像我调用插件一样频繁启动。你对如何解决它有什么建议吗?
这是当前插件在一个页面上有4个Gallerys。 http://andreknieriem.de/simple-lightbox-dev/
答案 0 :(得分:0)
你的onClick为类.elem
的每个元素调用函数。当您执行$(document).on('click'...
时,您也在监听页面上的任何位置。我猜这不是你想要的行为吗?你的意思是$(this).on('click' ...
?
尝试类似:
$.fn.myPlugin = function( options ){
var target = this;
// here are some functions for click and touching
$(document).on('click', target, function(e){
e.preventDefault();
console.log('click');
});
...