1

我是一个 JQuery 新手,在阅读 Jquery 书籍时遇到了这个 jquery 插件示例代码。

//adding a function to JQuery object
jQuery.slowEach = function( array, interval, callback ) {
    if( ! array.length ) return;
    var i = 0;
    next();
    function next() {
        if( callback.call( array[i], i, array[i] ) !== false )
            if( ++i < array.length )
                setTimeout( next, interval );
    }
    return array;
};

//attaching a new method .slowEach()
jQuery.fn.slowEach = function( interval, callback ) {
    return jQuery.slowEach( this, interval, callback );
};

// Show an element every half second
$('.reveal').slowEach( 500, function() {
    $(this).show();
})

我就是想知道在写这样的方法插件的时候是否需要写函数插件,有什么意义?如果没有,我可以在没有函数插件的情况下在 jQuery.fn.slowEach 方法中编写整个内容吗?

谢谢!

4

1 回答 1

3

如果我没记错的话,在 中编写你的函数/方法jQuery.fn,你将能够在所有 jQuery 对象上使用它,因为.fn它是 jQuery 的某种快捷方式prototype。您可以这样做,但您需要更改原始代码中的一些内容(例如,您需要将其this用作array变量)。这样,您将能够做到这一点:

//select a DOM element and apply the plugin on it
$('.reveal').slowEach( 500, function() {
   $(this).show();
});

将插件写入其中jQuery.yourplugin使其无需 jQuery 元素即可访问。这意味着您将能够执行以下操作:

//use it without doing it over a jQuery element
var ar = [1,2,3];
jQuery.slowEach(ar,500,function(){
   alert("hey");
});
于 2012-07-24T12:05:07.710 回答