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ます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 に答える