jQuery:仅在调整窗口大小时才触发事件

时间:2012-08-28 02:11:19

标签: jquery

如果要调整窗口大小,我想更改属性。调整大小后如何返回原始属性?

$(document).ready(function() {
    $('div').css('do 1');
});

$(window).resize(function(){
    $('div').css('do 2 and when resize is finished go back to 1');
});

4 个答案:

答案 0 :(得分:4)

.resize()是一个事件,而不是布尔属性。

因此,您可以指定在调整窗口大小时触发的处理程序。

$(window).resize(function() {
    $('body').prepend('<div>' + $(window).width() + '</div>');
});

答案 1 :(得分:1)

尝试将调整大小功能修改为此类

http://jsfiddle.net/Varinder/U3MKP/

以下是代码(以防小提琴链接不起作用)

$(document).ready(function() { $('div').css('do 1'); });

var t;
$(window).resize(function() {
   clearTimeout(t);
   $('div').css('do 2');
   t = setTimeout(function() {
     //resize end (sort-of-hacky) event fires here.
     $('div').css('do 1');
   }, 100);
});

答案 2 :(得分:0)

看起来你正在尝试做类似的事情:

$(window).resize(function() {
  var n = $(window).width;
  var trigger_num = 1000;

  if (n > trigger_num) {
    $('div').css('do something');
  } 
  else {
    $('div').css('do something else');
  }
});

触发器编号基本上是您定义的数字,以便在窗口超过特定大小时触发CSS。这当然可以用&lt;,==等修改

答案 3 :(得分:-1)

$(window).on( "resize" , function(){
 // do something
});

我建议限制此功能,因为每次更改像素大小时都会触发此功能。所以使用像underscorejs这样的东西。这将仅以每秒60帧的速度触发代码。

$(window).on( "resize" , _.throttle( function(){ 
    // do something 
} , 1000/60 ) );