2010-06-05 52 views
5

Tôi có plugin tab điều hướng ajax jQuery mà tôi đã tạo bằng cách sử dụng một số trợ giúp từ CSS-Tricks.com và plugin jQuery hashchange event (phát hiện thay đổi băm trong trình duyệt mà không không hỗ trợ nó).

Mã này rất ít thời gian để đăng nó ở đây nhưng nó đi một cái gì đó như thế này:

Phần 1) Khi một tab được nhấp, nó được thuộc tính href của tab đó và thêm nó vào thanh trình duyệt chuyển hướng như '#tab_name': window.location.hash = $(this).attr("href");

Phần 2) Khi thanh điều hướng thay đổi (thay đổi băm), nó được thay đổi như sau: window.location.hash.substring(1); (chuỗi con chỉ nhận 'tab_name' không có '#'), sau đó gọi hàm ajax để hiển thị thông tin.

tôi muốn để tự động kích hoạt các plugin để load tab đầu tiên khi trang được truy cập, vì vậy vào lúc bắt đầu của mã tôi đặt:

if (window.location.hash === '') { // If no '#' is in the browser navigation bar 
    window.location.hash = '#tab_1'; // Add #tab_1 to the navigation bar 
    $(window).trigger('hashchange'); // Trigger a hashchange so 'Part 2' of the plugin calls the ajax function using the '#tab_1' added 
} 

Các probles là nó hoạt động trong FF nhưng không phải trong Chrome, ý tôi là, mọi thứ đều hoạt động nhưng có vẻ như $(window).trigger('hashchange'); không hoạt động bởi vì nó không nhận được tab đầu tiên ..

Mọi đề xuất ??

Lưu ý: Nó đã hoạt động một số thời gian trước đây nhưng đột nhiên nó không (có thể Chrome cập nhật).

Trả lời

2

Tôi nghi ngờ rằng bạn đang cố kích hoạt sự kiện theo cách mà trình duyệt không hài lòng. Bộ xử lý của bạn cho "hashchange" được định nghĩa ở đâu? Tôi khuyên bạn nên thử ràng buộc nó với

$('body').bind('hashchange', function() { ... }) 

thay vì "cửa sổ". Thậm chí điều đó có thể cung cấp cho bạn các vấn đề trong trình duyệt WebKit; nếu có, bạn có thể tạo <div> để bọc nội dung của bạn và liên kết với nội dung đó.

+0

Vâng, hàm băm được định nghĩa như sau: $ (cửa sổ) .bind ('hashchange', function() {... – Jonathan

+3

Tôi đã tìm thấy sự cố, tôi sẽ gọi $ (cửa sổ) .trigger ('hashchange') , trước khi hashcnage được định nghĩa trong $ (window) .bind ('hashchange', function() {... Thanks por trỏ tôi đến hướng! – Jonathan

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