3

我正在开发一个利用 JavaScript 间隔的 jQuery 插件。但是,当使用参数runningas再次调用插件时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 回答