2011-09-13 32 views
12

Một số (tốt, gần như tất cả) mã của tôi nằm trong hàm jQuery .ready của tôi cũng áp dụng khi cửa sổ được thay đổi kích thước, vì bố cục của nó hoạt động. Tuy nhiên, vì nó là cùng một mã, làm thế nào tôi có thể "kết hợp" hai chức năng, để mã của tôi không lặp lại chính nó (và là một mớ hỗn độn để duy trì)?jQuery kết hợp .ready và .resize

Cảm ơn!

Trả lời

41
$(document).ready(myfunction); 
$(window).on('resize',myfunction); 

function myfunction() { 
    // do whatever 
} 

kỹ thuật khác là .trigger() một sự kiện bên trong khác:

$(window).on('resize',function() { 
    // do whatever 
}); 
$(document).ready(function() { 
    $(window).trigger('resize'); 
}); 

Nếu bạn đặt mã của bạn ở dưới cùng của trang để tránh cần $(document).ready, nó được thậm chí đơn giản hơn:

$(window).on('resize',function() { 
    // do whatever 
}).trigger('resize'); 
+0

Và thậm chí đơn giản hơn: $ (cửa sổ) .resize (function() {// do anything}). Resize(); –

+2

@ Kudla69 Tôi luôn thích viết '.trigger ('thing')' thay vì chỉ '.thing()' trong jQuery, chỉ vì tôi thấy nó rõ ràng hơn khi đọc. – Blazemonger

+0

Tôi thấy cách điều đó có thể hữu ích. Bất kể, câu trả lời hay! :) –

7

Một cái gì đó như thế này ??

function mySetupFunction() { 
    // stuff here. 
} 

$(document).ready(mySetupFunction); 
$(window).resize(mySetupFunction); 
6

Một tùy chọn tốt hơn

$(window).on("load resize",function(e){ 
    function abc() { 
    // code here 
    } 
}); 
Các vấn đề liên quan