我正在开发一个利用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元素分配间隔。
答案 0 :(得分: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);
}