2011-01-04 27 views
5

Hai chức năng này sẽ được kích hoạt khi tải và thay đổi kích thước. Tôi đang tự hỏi làm thế nào để viết nó nhỏ gọn và đẹp hơn. Ý tưởng nào?Làm cách nào để viết đoạn mã jQuery này đẹp hơn

$(document).ready(function() { 
    fullScreen(); 
    footer(); 
    $(window).resize(function() { 
     fullScreen(); 
     footer(); 
    }); 
}); 

Trả lời

6

Bạn có thể kích hoạt các sự kiện resize ngay sau khi bạn đăng ký xử lý của bạn:

$(document).ready(function() { 
    $(window).resize(function() { // Register handler. 
     fullScreen(); 
     footer(); 
    }).resize();     // Trigger event. 
}); 
+0

Ồ thật tuyệt! –

+0

Ồ vâng, đây là nó! – Thomas

+0

Kích hoạt một sự kiện chỉ để gọi chức năng của riêng bạn là ... không tối ưu để đặt nó nhẹ nhàng. –

4

Vâng, bạn có thể kết hợp chúng thành một chức năng, nhưng tôi không chắc chắn nó nhiều hơn "đẹp":

jQuery(function($) { 

    both(); 
    $(window).resize(both); 

    function both() { 
     fullScreen(); 
     footer(); 
    } 
}); 

Nó giải quyết vấn đề không lặp lại chính mình.

Tắt chủ đề: Tôi cũng đã chuyển $(document).ready(function(){... thành jQuery(function($){.... Nó cũng giống như vậy, nhưng làm cho mã được trích dẫn tương thích với noConflict, nếu nó hữu ích. Nếu bạn không bao giờ muốn noConflict tương thích, bạn có thể sử dụng $(function(){... thay vào đó, nhưng hey, từ sáu ký tự thêm ...

+0

điều này có thể tối ưu hơn, nhưng trong trường hợp này tôi thích câu trả lời nhỏ gọn hơn của Frédéric Hamidi;) cảm ơn. – Thomas

2
$(function() { 
    function both() { 
     fullScreen(); 
     footer(); 
    } 

    both(); 
    $(window).resize(both); 
}); 
0
$(document).ready(function() { 
     var doStuff = function() { 
      fullScreen(); 
      footer(); 
     }; 
     doStuff(); 

     $(window).resize(function() { 
      doStuff(); 
     }); 
    }); 
+1

Bạn có 2 bit không cần thiết của mã, tại sao viết một khai báo hàm như thế, và tại sao lại bọc một cuộc gọi hàm trong một cuộc gọi đến một hàm ẩn danh? –

1

@TJ Câu trả lời của Crowder (gọi đến phương thức khác) có vẻ là một giải pháp lý tưởng.

Cuộc gọi đến phương thức mới ghi lại ý định của các cuộc gọi đến cả hai phương pháp đó, làm cho nó chức năng.

Ngoài ra, nếu bạn cần thay đổi việc cần làm khi tải hoặc đổi kích thước, bạn chỉ phải thay đổi nó theo một phương pháp làm cho nó duy trì được.

Tên có ý nghĩa, ví dụ: readjustLayoutAfterResize mô tả ý định làm cho nó có thể đọc được.

Chức năng, có thể bảo trì và dễ đọc là đẹp đối với tôi và tôi chắc chắn với bất kỳ ai sẽ duy trì nó.

+1

Đây không phải là câu trả lời? Đây là một bình luận. –

+0

Điều này có thể là một bình luận. Đó là một tốt mặc dù. –

+0

Tôi nghĩ rằng quá @ Marcus và @Tomalak, nhưng vì nó chứa thông tin về lý do tại sao phương pháp tiếp cận có thể đáp ứng các tiêu chí đẹp, nó có vẻ hữu ích hơn là câu trả lời chứ không phải là một nhận xét chật hẹp có thể không được mở rộng/đọc. – StuperUser

Các vấn đề liên quan