【问题标题】:jQuery plugin unique timer on each instance每个实例上的 jQuery 插件唯一计时器
【发布时间】:2013-07-15 13:54:02
【问题描述】:

我已经构建了一个 jQuery 插件,可以检测窗口调整大小以将两种 div 颜色从红色变为蓝色。然后它使用一个计时器事件来检测窗口何时完成调整大小并将颜色从蓝色变回红色。

问题是两个 div 中只有一个变回红色。我认为这可能是由于共享相同的计时器变量。

如何确定计时器事件的范围,使其对每个实例都是唯一的?

http://jsfiddle.net/hqN2k/9/

!function($){
$.fn.resizeD = function() {
    return this.each(function(){
        var $this = $(this);
 $(window).resize(function() {              
     $this.css("background","blue");

     var existingResizeTimeout = $(this).data("resize_timer");

     if(existingResizeTimeout){
         clearTimeout(existingResizeTimeout);
     }

     $.data(this, 'resize_timer', setTimeout(function() {

         $this.css("background","red");

     }, 500));
});
});
}
}(window.jQuery);

$(document).ready(function(){
$(".test").resizeD();
});

【问题讨论】:

    标签: javascript jquery plugins timeout


    【解决方案1】:

    改变

    $.data(this, 'resize_timer', setTimeout(function() {
         $this.css("background","red");
    }, 500));
    

    $.data($this, 'resize_timer', setTimeout(function() {
         $this.css("background","red");
    }, 500));
    

    小提琴:http://jsfiddle.net/hqN2k/10/

    【讨论】:

      猜你喜欢
      • 2017-09-30
      • 2018-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 2020-12-03
      相关资源
      最近更新 更多