jQuery .trigger () или $ (окно) не работает в Google Chrome - PullRequest
5 голосов
/ 05 июня 2010

У меня есть этот плагин jQuery ajax навигационных вкладок, который я создал с помощью некоторой справки от CSS-Tricks.com и плагина jQuery hashchange *1002* (обнаруживает изменения хеша в браузерах, которые его не поддерживают).

Код немного длинный, чтобы разместить его здесь, но он выглядит примерно так:

Часть 1) При нажатии на вкладку, она получает атрибут href этой вкладки и добавляет его на панель навигации браузера, например '#tab_name': window.location.hash = $(this).attr("href");

Часть 2) Когда изменяется навигационная панель (изменение хеша), она получает изменение href следующим образом: window.location.hash.substring(1); (подстрока должна получить только 'tab_name' без '#'), а затем вызвать функцию ajax для получить информацию для отображения.

Я хочу автоматически запустить плагин для загрузки первой вкладки при доступе к странице, поэтому в начале кода я поставил:

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
}

Проблема в том, что он работает в FF, но не в Chrome, я имею в виду, что все работает, но кажется, что $(window).trigger('hashchange'); не работает, потому что он не получает первую вкладку ..

Есть предложения ??

Примечание. Некоторое время назад это работало, но внезапно - нет (возможно, обновление Chrome).

1 Ответ

2 голосов
/ 05 июня 2010

Я подозреваю, что вы пытаетесь вызвать событие так, как браузер не устраивает.Где определен ваш обработчик для hashchange?Я предлагаю вам попробовать связать его с

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

вместо "окна".Даже это может вызвать проблемы в браузерах WebKit;если это так, вы можете создать <div>, чтобы обернуть содержимое своего тела и привязать к нему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...