3

JavaScript 間隔を利用する jQuery プラグインに取り組んでいます。ただし、引数runningとしてプラグインが再度false呼び出されると、その特定の DOM 要素で呼び出された前の間隔がクリアされます。

短縮されたコードを次に示します。

(function ($) {
    $.fn.examplePlugin = function (running) {
        return this.each(function () {
            if (running === false) {
                // Clear the previous interval assigned to this DOM element
            } else {
                setInterval(function () {
                    // Interval code
                }, 50);
            }

           return this;
        });
    };
})(jQuery);

これはどのように可能ですか?グローバル変数を使用して間隔を保存することを考えましたが、実際にはそうしたくありません。また、特定の DOM 要素に間隔を割り当てる方法もわかりません。

4

1 に答える 1

4

DOM要素ごとに間隔を保存したい場合.data()は、特定のDOM要素にデータを設定するという、まさにあなたが望むことを行う を使用するのが最善です。

var saved = $(this).data("__examplePlugin_interval");

if (saved) { // I think you mean when it *is* running
    clearInterval(saved);
    $(this).removeData("__examplePlugin_interval");
} else {
    var interval = setInterval(function () {
        // Interval code
    }, 50);

    // choose a name that won't be accidentally overwritten by others
    $(this).data("__examplePlugin_interval", interval);
}
于 2011-12-10T11:33:37.727 に答える