不能调用 setInterval 两次
Can't call setInterval twice
当调用父元素的setInterval 时,子元素的setInterval 停止工作。这就是我调用 setInterval
的方式
$.fn.__blink = function(color) {
self = $(this);
if (self.attr('data-blinker') == undefined) {
var blinker = setInterval(function() {
original_color = self.css('background');
self.css('background', color).delay(300).queue(function(nxt) {
self.css('background', original_color);
nxt();
});
}, 1000);
self.attr('data-blinker', blinker);
}
return self;
};
元素位于导航菜单中,其中子元素是菜单项的子菜单
我能看到的问题是你已经创建了 self
和 original_color
作为全局变量,所以当你第二次调用 __blink
时 original_color
的值可能被第二次调用覆盖
$.fn.__blink = function (color) {
var self = $(this);
if (self.attr('data-blinker') == undefined) {
var blinker = setInterval(function () {
var original_color = self.css('background');
self.css('background', color).delay(300).queue(function (nxt) {
self.css('background', original_color);
nxt();
});
}, 1000);
self.attr('data-blinker', blinker);
}
return self;
};
当调用父元素的setInterval 时,子元素的setInterval 停止工作。这就是我调用 setInterval
的方式$.fn.__blink = function(color) {
self = $(this);
if (self.attr('data-blinker') == undefined) {
var blinker = setInterval(function() {
original_color = self.css('background');
self.css('background', color).delay(300).queue(function(nxt) {
self.css('background', original_color);
nxt();
});
}, 1000);
self.attr('data-blinker', blinker);
}
return self;
};
元素位于导航菜单中,其中子元素是菜单项的子菜单
我能看到的问题是你已经创建了 self
和 original_color
作为全局变量,所以当你第二次调用 __blink
时 original_color
的值可能被第二次调用覆盖
$.fn.__blink = function (color) {
var self = $(this);
if (self.attr('data-blinker') == undefined) {
var blinker = setInterval(function () {
var original_color = self.css('background');
self.css('background', color).delay(300).queue(function (nxt) {
self.css('background', original_color);
nxt();
});
}, 1000);
self.attr('data-blinker', blinker);
}
return self;
};