jQuery $(window).resize(); 的等效事件监听器,只在指定轴发生更改时触发?

17
我正在寻找一个事件监听器,它的工作方式类似于jQuery的.resize(),但只在调整大小的对象(指窗口)在x轴上调整大小时触发,或者在两个轴上同时调整大小,而不是仅在y轴上。 - 所以基本上它只会监听宽度的调整事件。

这个页面可以回答这个问题:https://dev59.com/f3E85IYBdhLWcg3wShaf。 - Anthony Carbon
3个回答

41

你可以在窗口加载时将浏览器的宽度保存在一个变量中。举个例子:

var w = 0;

$( window ).load( function(){

   w = $( window ).width();

});

$( window ).resize( function(){

  if( w != $( window ).width() ){

    //Do something

    w = $( window ).width();


  }

});

如果我可以补充一点 - 长时间内这可能不是可靠的,因为垃圾回收可能会在变量不再被引用时将其删除...如果有人能够回答这个问题,那将不胜感激,因为我过去曾经遇到过这样的问题... - user1360809

5
像这样使用怎么样?
var w = $(window).width();
$(window).resize(function(){
  if ($(window).width()==w) return; 
  w = $(window).width();
  // ... your code
});

1

您可以使用:

$(window).resize(function(e) {
console.log(e.old.width + " - " + $(this).width());
console.log(e.old.height + " - " + $(this).height());
if(e.old.width==$(this).width() && e.old.height!=$(this).height()){
//only vertical resize done
}else
{
 //horizontal or horizontal+ vertical resize done
}
});​

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接