多次调用 jQuery 插件时 SetInterval 发生冲突
我正在开发一个使用 SetInterval 的自定义 jQuery 插件,但是当它被多次调用时它就会中断。
我有这样的事情:
(function($){
$.fn.myplugin = function(options) {
var defaults = {};
var options = $.extend(defaults, options);
var interval;
this.each(function() {
//etc.
interval = setInterval(function(){ doMyOtherFunc(options); }, 1000);
});
function doMyOtherFunc(options) {
//etc
}
}
})(jQuery);
如果我调用它一次,功能就会按预期工作,但如果我在第二个元素上再次调用它,它就会中断。
$('#myelement').myplugin({'option1', 'option2'});
$('#myotherelement').myplugin({'option1', 'option2'});
不知何故,第二个实例中的间隔会覆盖前一个元素、数据和所有元素上的间隔。 (但是传递的样式并没有搞砸。)这是 setInterval 的奇怪限制,还是我做错了什么?
I'm working on a custom jQuery plugin that makes use of SetInterval, but it breaks when it's called more than once.
I have something sort of like this:
(function($){
$.fn.myplugin = function(options) {
var defaults = {};
var options = $.extend(defaults, options);
var interval;
this.each(function() {
//etc.
interval = setInterval(function(){ doMyOtherFunc(options); }, 1000);
});
function doMyOtherFunc(options) {
//etc
}
}
})(jQuery);
Functionality works as expected if I call it once, but if I call it again on a second element it breaks.
$('#myelement').myplugin({'option1', 'option2'});
$('#myotherelement').myplugin({'option1', 'option2'});
Somehow, the interval in the second instance overrides the one on the previous element, data and all. (But the styling passed doesn't get screwed up.) Is this a weird limitation of setInterval, or am I doing something wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您必须使间隔句柄对每个元素都是私有的。为此,您可以使用
$.data
:并且您可以通过以下方式检索间隔:
You have to make the interval handle private to each element. For this, you could use
$.data
:And you could retrieve the interval this way: