2012-01-27 21 views
14

Tôi đang sử dụng một số mã nhúng chèn HTML vào trang động và vì tôi phải sửa đổi HTML được chèn động, tôi muốn có chức năng jquery để đợi cho đến khi trang tải xong, tôi đã thử delay nhưng dường như nó không hoạt động.Làm điều gì đó SAU KHI trang đã tải hoàn toàn

Vì vậy, ví dụ, HTML động chèn có một yếu tố div#abc

và tôi có jquery này:

if ($('#abc')[0]) { 
    alert("yes"); 
} 

cảnh báo không hiển thị.

Tôi đánh giá cao sự giúp đỡ nào

Cảm ơn

+1

Phụ thuộc vào vị trí/cách bạn chèn html động có div # abc –

+1

Làm cách nào để 'div # abc' được thêm vào HTML/DOM? – Stefan

+0

Hmm .. ví dụ như google cộng với một mã nhúng, tôi đặt một javascript trong html của tôi, mà lần lượt tải một iframe và divs khác, tôi muốn sửa đổi một trong những yếu tố SỐ – 3zzy

Trả lời

34
$(window).load(function() { 
    .... 
}); 

Nếu bạn phải đợi cho một khung nội tuyến (và không quan tâm đến tài sản, chỉ cần DOM) - thử điều này:

$(document).ready(function() { 
    $('iframe').load(function() { 
     // do something 
    }); 
}); 
+0

nope, vẫn không. – 3zzy

+0

có thể là do mã nhúng chèn html vào khung nội tuyến và/hoặc không đồng bộ? – 3zzy

+0

Điều này chờ tất cả nội dung trên trang CURRENT. Bạn có iframes để chờ cho là tốt? –

4

Hãy thử điều này:

$(document).ready(function() { 
    if ($('#abc')[0]) { 
     alert("yes"); 
    } 
}); 
9

Đó là mục đích của jQuery's .ready() sự kiện:

$(document).ready(function() { 
    if ($('#abc').length) //If checking if the element exists, use .length 
     alert("yes"); 
}); 

Mô tả: Chỉ định một chức năng để thực hiện khi DOM hoàn toàn nạp.

+1

James đã đúng. Xem tài liệu: http://api.jquery.com/ready/ .. DOM sẽ được tải và sẵn sàng để thao tác khi điều này được gọi. –

+1

Và cũng giống như một lưu ý nhanh ... Tôi tin rằng sự khác biệt giữa window.load và jQuery.ready là window.load đợi cho đến khi * tất cả * nội dung (ví dụ: biểu định kiểu, hình ảnh, v.v.) đã được tải xuống trước khi nó được gọi trong khi jQuery.ready kích hoạt ngay sau khi DOM được tải và không quan tâm nếu hình ảnh đó vẫn đang tải. –

+0

"mã nhúng chèn HTML vào trang động" có thể được thêm vào DOM sau khi sự kiện 'ready' được kích hoạt. – Stefan

6

Sử dụng jQuery.ready là đủ. Hãy thử điều này

$(document).ready(function(){ 
    //your code here 
}); 

hoặc

$(function(){ 

}); 

đó là một phím tắt những người đầu tiên.

1
$(window).load(function() { ... } 

có thể đủ nhưng nếu không mã nhúng của bạn (có thể có) có thể cung cấp một số chức năng gọi lại mà bạn có thể sử dụng.

delay() chỉ nên được sử dụng để trì hoãn animations.

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