调整大小内的条件语句不会在满足条件时每次触发

时间:2013-12-03 21:12:13

标签: javascript jquery resize

我试图在调整大小时触发一次函数。问题是条件语句由于某种原因每次都没有被执行。代码是

var old_width= $(window).width(); 
$(window).on('resize.3col',function(e){ 
  clearTimeout(timer);
  timer=setTimeout(function(){
    var nw= $(window).width();
    if((nw <= old_width) && (nw <= '940') &&   (nw >= '915') ){
      appendList('resize.3col');
    }
    old_width= nw;
  } , 500);
});

我使用settimeout的原因是因为我想获得新的宽度,如果我不使用它,新宽度与我不想要的旧宽度相同。如果我不使用settimeout,则条件有效。 编辑: 条件语句有时在其他时候不会发生。如何让它更顺畅?

2 个答案:

答案 0 :(得分:0)

试试这段代码,看看是否有任何区别:

var $win = $(window),
  oldWidth= $win.width(),
  winResized = function(){
    var newWidth= $win.width();

    if (
      newWidth <= oldWidth &&
      newWidth <= 940 &&
      newWidth >= 915
    ){
      appendList('resize.3col');
    }
    oldWidth = newWidth;
  },
  timer;

$win.on('resize.3col',function(e){
  clearTimeout(timer);
  timer = setTimeout(winResized, 500);
});

答案 1 :(得分:0)

我使用相同的计时器变量来调用具有不同名称空间'3col','4col'和'5col'的resize事件。我还添加了if(timer)clearTimeout(timer);这改善了功能。谢谢:))