2010-02-22 34 views
5

Trên trang web của tôi, tôi tự động sửa đổi thuộc tính javascript 'className' của DIV. Tuy nhiên đây là một hoạt động cực kỳ tốn kém, vì DIV chứa rất nhiều nút con. Đôi khi phải mất đến 1,5 giây.Sửa đổi thuộc tính 'className' cực kỳ chậm trong IE7

Có cách nào tăng tốc hoạt động này không? Giống như, ẩn nội dung, thực hiện thao tác, sau đó hiển thị lại nội dung?

Cập nhật:

Một số thông tin bổ sung.

Mã thực tế:

$("#myDiv").tabs(); 

Nó nằm witin handler .ready(). Xem http://jqueryui.com/demos/tabs/

Đây là cuộc gọi tốn kém. Tôi đã theo dõi nó hơn nữa xuống thuộc tính className, tiêu thụ tất cả thời gian xử lý đó.

DIV chứa bảng dữ liệu lớn hơn, xem http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spview.renderashtml.aspx Mã được chạy trên Sharepoint, được thử nghiệm trên WinXP + IE7.

Vì vậy, tôi tự hỏi liệu chúng tôi có thể vô hiệu hóa bố cục làm mới trong khi thao tác DOM hoặc điều gì đó tương tự. Có thủ đoạn nào không?

+1

Mã trông như thế nào bạn hiện đang sử dụng để thực hiện sửa đổi? –

+1

Bạn có thể hiển thị mã bạn đang sử dụng và HTML (hoặc mẫu của nó) đang được sửa đổi không? –

+0

Bạn đã thử elem.setAttribute ("class", 'newclassname') chưa? – amphetamachine

Trả lời

3

Hãy thử đảm bảo rằng bộ chọn CSS ảnh hưởng đến các yếu tố chứa trong vùng chứa có tên lớp đang thay đổi chỉ sử dụng lớp chứa khi chúng thực sự phải thực hiện. Rõ ràng, khi bạn đang lái xe bố trí với các lớp container, có lẽ rất nhiều thứ bị ảnh hưởng, nhưng đôi khi nó dễ dàng để thả trong div.whatever td.currency khi thực sự tất cả các bạn cần là td.currency (chỉ là một ví dụ make-up). Các công cụ bố trí IE thực sự nhanh chóng đối với một số thứ, nhưng tôi thấy rằng việc sử dụng kỹ thuật sắp xếp nặng nề này (đó là, tôi tin rằng, một thực hành rất tốt nói chung) có thể đánh thuế trình duyệt rất nhiều. Rất may, IE8 là tốt hơn rất nhiều ở loại điều này.

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