我正在尝试编写一个简单的JQuery插件来执行以下操作 - 我需要传入一个元素,例如$(“div”)。applyPlugin();然后让它通过我传入的每个选择器并设置一个div的THAT实例的本地间隔,然后在一段时间后清除它。我正在尝试编写一个插件来帮助实现这一目标,但似乎存在一个范围问题,我不确定最新情况。
同样,我需要在div上设置一个计时器,并且能够在页面上重复使用它10次。所有的div都会有自己的“定时器”,当你重新鼠标移动div时,它会自动清除定时器。鼠标关闭,重新启动计时器等
我不确定是否必须使用插件的内部方法来完成,或者是否有更好/更简单的方法来执行此操作。
到目前为止,这是我到目前为止的情况 - “
(function( $ ){
var methods = {
init : function( options ) {
/* init method */
return setInterval( $(this).boxit('update'),5000);
},
show : function( ) { },
hide : function( ) { },
update : function( content ) {
/* update method */
console.log("ping");
}
};
$.fn.boxit = function( method ) {
// Method calling logic
if ( methods[method] ) {
return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( this, arguments );
} else {
$.error( 'Method ' + method + ' does not exist on jQuery.tooltip' );
}
};
})( jQuery );
答案 0 :(得分:0)
我可能会在这里找到完全错误的方向,所以请原谅我,如果这不是你想要的,但你可以将对jQuery对象的引用作为参数传递。
(function( $ ){
var methods = {
init : function( jqObject, options ) {
/* init method */
return setInterval( jqObject.boxit('update'),5000);
},
show : function( ) { },
hide : function( ) { },
update : function( content ) {
/* update method */
console.log("ping");
}
};
$.fn.boxit = function( method ) {
var args = Array.prototype.slice.call( arguments, 0 );
args.splice(0, 0, $(this));
// Method calling logic
if ( methods[method] ) {
return methods[ method ].apply( this, args.slice( 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( this, args );
} else {
$.error( 'Method ' + method + ' does not exist on jQuery.tooltip' );
}
};
})( jQuery );