2

彗星のようなものを作ろうとしています。PHPページからデータを収集するプラグインがあります。問題は、プラグイン自体の内部を呼び出す方法がわからないことです。

関数の場合は次のようになりますがfunction j () {setTimeout(j(), 1000);}、jQueryプラグインを使用しています。

これが私のプラグインコードです:

(function($) {
$.fn.watch = function(ops) {
    var
        $this_ = this,
        setngs = $.extend({
            'type'  : 'JSON',
            'query' : 'GET',
            'url'   : '',
            'data'  : '',
            'wait'  : 1000
        }, ops);

        if (setngs.type === '') {
            return false;
        } else if (setngs.query === '') {
            return false;
        } else if (setngs.url === '') {
            return false;
        } else if (setngs.wait === '') {
            return false;
        } else if (setngs.wait === 0) {
            setngs.wait = 1000;
        }

        var xhr = $.ajax({
            type        : setngs.query,
            dataType    : setngs.type,
            url         : setngs.url,
            success     : function(data) {
                var i = 0;
                for (i = 0; i < data.length; i++) {
                    var html = $this_.html(), str = '<li class="post" id="post-' + data[i].id + '"><div class="inner"><div class="user">' + data[i].user + '</div><div class="body">' + data[i].body + '</div></div></li>';
                    $this_.html(str + html);
                }
                setTimeout($this_, 1000);
            }
        });
};
})(jQuery);

これはsetTimeout($this_, 1000);私が問題を抱えているところです。プラグインを何と呼ぶか​​わかりません。$this_それは私がうまくいくかもしれないと思ったものですが、私は間違っています。それは私が交換する必要があるものです。

ご協力いただきありがとうございます。

4

1 に答える 1

1

ここでは、おそらく JavaScript を使用call()して関数を呼び出します。MDN ドキュメント

したがって、プラグイン内で で呼び出すことができます$.fn.watch.call(this)。に渡された引数はスコープを設定するため、同じスコープ内で呼び出すcallように渡します。this

これがJSBinでどのように機能するかの基本的な例をまとめました。

setTimeout次のように使用できます。

setTimeout(function() { $.fn.watch.call(this) }, 1000);

JSBin の例

お役に立てれば :)

于 2012-06-17T21:34:48.723 に答える