2012-04-26 32 views
5

Tôi có một trang đơn giản, chỉ cố gắng đính kèm sự kiện tải vào tài liệu. Tôi không chắc chắn xử lý sự kiện để sử dụng trong jQuery để làm điều này với. Tôi đã thử $()$(document).ready.load nhưng dường như không chạy mã vào đúng thời điểm. Tôi có nên sử dụng .on, .live không? Hoặc có điều gì đó tôi đang làm sai. Đây là mẫu:Trình xử lý sự kiện jQuery nào hoạt động để tải trang?

<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript"> 
    $(document).ready(
     showWidth() 
    ); 
    function showWidth() { 
     alert($('#textTitle').width()); 
    } 
</script> 
</head> 
<body> 
<div class="page"> 
     <div id="title"> 
      <h1 id="textTitle">yo</h1> 
     </div> 
</div> 
</body> 
</html> 

Khi tôi chạy cảnh báo này hiển thị null.

Trả lời

6

Bạn quên viết mã của mình thành hàm.

$(document).ready(function() { 
     showWidth(); 
    }); 

Hoặc chỉ đơn giản là

$(function() { 
     showWidth(); 
    }); 
+0

Hoặc cho ngắn $ (showWidth); – GillesC

+0

Thú vị. Tôi nghĩ rằng vì nó chỉ là một lớp lót, tôi sẽ không cần phải đóng cửa trong đó. –

+1

nó không phải là một đóng cửa đó là một cuộc gọi trở lại. Những gì bạn gõ là goind để chạy hàm và cố gắng gán trả về làm đối số. Mà sẽ trở lại undefined và đây là lý do tại sao cảnh báo của bạn đã popping trước khi DOM đã sẵn sàng. Nếu bạn rời khỏi() ra thì bạn gán tham chiếu hàm và không thực hiện nó. – GillesC

1

Hãy thử điều này http://jsfiddle.net/vdCwE/

Ngoài ra, bạn có chắc bạn đã bao gồm jQuery trong trang của bạn? Tôi không thấy nó trong mã của bạn.

1

Có hai trạng thái tải. Một là "DOM sẵn sàng" có thể được yêu cầu bằng cách chỉ sử dụng

// the long way 
$(document).ready(function() { console.log("dom ready"); }); 
// the short way 
$(function() { console.log("dom ready"); }); 

Hoặc bạn muốn chờ đợi cho "tải" của trang thực tế (hình ảnh, khung nội tuyến và vân vân) thì bạn có thể sử dụng

$(window).load(function() { console.log("everything should be loaded"); }); 
Các vấn đề liên quan