Jquery插件/设置间隔和范围问题

时间:2011-08-24 15:59:57

标签: javascript jquery html html5 scope

我正在尝试编写一个简单的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 );

1 个答案:

答案 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 );