2015-06-24 73 views
0

調用父元素的setInterval時,子元素的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; 
}; 

元素是一個導航菜單,子元素是一個菜單項

回答

1

我能看到的是你已經創建self ABD 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; 
}; 
+0

得到重寫這不是要創建這些變量的新實例? –

+0

不是因爲你已經使用它而沒有在函數中用'var'聲明變量...變量將會在全局範圍內創建.... –

+0

哦,幫助,謝謝 –