2011-08-20 26 views
13

Tôi có chức năng ẩn điều khiển có điều kiện trước khi tài liệu được tải. Nếu tôi đặt chức năng này trên $(document).ready, tôi thấy trang nhấp nháy để ẩn các điều khiển có điều kiện. Tôi muốn biết nếu có một sự kiện có thể được gọi trước khi $(document).ready được kích hoạt.

+3

bạn không thể đặt chúng vào ẩn theo mặc định và chỉ hiển thị các những cái bạn cần trên '$ (document) .ready'? – Oded

+0

Khi bạn nói ẩn theo mặc định, bạn có đang sử dụng css để ẩn chúng hay không. Nếu tôi làm điều này, jquery sẽ có thể hiển thị và ẩn chúng? –

+0

Vâng, ý tôi là CSS, và có, jQuery có thể. – Oded

Trả lời

6

Như những người khác nói làm một cái gì đó như thế này

<div id="test" class="hidden"> my hidden div tag </div> 

.hidden 
{ 
display:none; 
} 

trong tài liệu.sẵn sàng, bạn có thể hiển thị, đây là tương đương với onload, mà đợi đến khi html được nạp

$(document).ready(function() { 
    $('#test').show(); 
}); 

dụ jsfiddle đây

http://jsfiddle.net/kdpAr/

6

Sự cố thường gặp. Sử dụng CSS để ẩn các điều khiển theo mặc định và sau đó sử dụng JS khi $(document).ready để quyết định các điều khiển nào hiển thị. Sẽ không có nhấp nháy. Nó sẽ chỉ trông giống như các phần thích hợp của trang đang tải dần dần.

Bạn không thể chạy JS một cách an toàn trước khi tài liệu sẵn sàng và các phần của tài liệu sẽ hiển thị trước khi bạn có thể chạy JS. Vì vậy, giải pháp duy nhất là đảm bảo tất cả các phần tử không nhấp nháy được ẩn theo mặc định và sau đó bạn chỉ hiển thị những phần tử bạn muốn hiển thị.

Cách đơn giản nhất để làm điều này là chỉ cần đặt một lớp học phổ biến trên tất cả các yếu tố năng động:

<div id="myControl1" class="initiallyHidden"></div> 

và sử dụng CSS để chắc chắn rằng tất cả họ đều bắt đầu ẩn:

.initiallyHidden {display: none;} 

Và sau đó javascript của bạn sẽ ghi đè khi nó quyết định một phần tử sẽ hiển thị:

document.getElementById("myControl1").style.display = "block"; 
1

Khi tôi đã cần thiết để che giấu một cái gì đó trước khi Javascript được nạp tôi sẽ thiết lập nó ẩn trong css như sau:

display:none; 

hay:

visibility: hidden; 

Bạn cũng có thể sử dụng điều kiện kết hợp với Javascript để lộ nó nếu cần thiết.

+0

hoặc kể từ khi jquery đã được đề cập: 'class =" ui-helper-hidden-accessible "' –

1

gọi hàm JavaScript trong bên cạnh yếu tố HTML

ví dụ:

<span></span> 
<script> call JS function</script> 
+0

Cảm ơn, bằng cách này sẽ không thể làm mọi thứ một cách tổng quát. Nếu tôi phải ẩn và hiển thị nhiều Element thì làm như vậy với những gì bạn có thể hiển thị có thể không phải là lựa chọn đúng đắn –

+1

nhưng bạn có thể tham khảo tất cả các tham chiếu JavaScript bên ngoài của trang. và cal hàm JavaScript sau tất cả phần tử. điều này sẽ tiết kiệm thời gian tải tập tin tham chiếu. Sau đó bạn có thể chạy các chức năng trước khi tất cả các tập tin được tải. –

0

Bạn chỉ có thể mở một thẻ script ngay sau khi HTML mà bạn muốn ẩn condionnaly (jQuery phải được khai báo trước tuy nhiên) và sau đó gọi ẩn trực tiếp, không phải bên trong $ (tài liệu) .đã có như sau:

<div id="toHide">Lorem ipsum</div> 

<script type="text/javascript"> 
    $("#toHide").hide(); 
</script> 
Các vấn đề liên quan