2012-08-28 134 views
0

如果正在调整窗口大小,我想更改属性。如何在调整大小后返回到原始属性?jQuery:仅当窗口被调整大小时触发事件

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

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

'resize'是一个事件,你只能做一些事情,当它被解雇时,你不能用它作为if条件。 – xdazz

回答

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); 
}); 
+0

正是我在找的东西。我曾尝试过类似的事情,但在暂停时感到纠结。感谢Varinder! – Yisela

4

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

所以你可以指定一个处理程序,当窗口被调整大小时触发。

$(window).resize(function() { 
    $('body').prepend('<div>' + $(window).width() + '</div>'); 
}); 
-1
$(window).on("resize" , function(){ 
// do something 
}); 

我建议节流这个功能,因为它的每一个像素大小改变时被解雇。所以使用像underscorejs这样的东西。这将仅每60帧每秒触发代码。

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

你没有回答问题。 :) – bPratik

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的数字。这当然与<,==等

+0

这是一个流畅的设计,我希望这个事件发生在每次有人调整大小时,无论从哪个尺寸或哪个尺寸 – Yisela

+0

所有你需要的是@Marko提供的。 $(window).resize(function(){* code *}); – ckaufman

相关问题