JQuery window.location.hash не поддерживается в IE?

Возможный дубликат:
window.location = # якорь не работает в IE

У меня есть поле выбора, которое при нажатии изменяет хэш в URL-адресе моей страницы на основе AJAX. У меня есть функция, которая периодически проверяет window.location.hash на наличие изменений, а затем соответствующим образом обновляет содержимое. Следующий код — это функция, которая изменяет URL-адрес при изменении выбора. Он работает в Firefox, но я не могу заставить его работать в IE! Я продолжаю получать объект, не поддерживающий это свойство или ошибку метода:

#ob мой выбор

$("#ob").change(function() {
   ob = $(this).val();
   window.location.hash = "#ob=" + ob;
});

Какие-либо предложения? Спасибо!


person user2781234    schedule 04.09.2012    source источник
comment
Какую версию IE вы использовали? IE7 или более ранние версии не поддерживают событие onhashchange.   -  person sajawikio    schedule 04.09.2012


Ответы (2)


Проблема не в хэше, ошибка происходит в строке перед.
объявить переменную с ключевым словом var:

$("#ob").change(function() {
   var ob = $(this).val();
   window.location.hash = "#ob=" + ob;
});

Прочтите объяснение здесь: селектор jQuery не работает в IE7. /8

person Dr.Molle    schedule 04.09.2012

Вместо того, чтобы запускать собственное управление состоянием, я бы просто использовал проверенную в боевых условиях библиотеку, которая справится со всем за вас. Мне больше всего нравится jQuery BBQ.

$("#ob").change(function() {
   var ob = $(this).val();
   $.bbq.pushState({ ob:ob });
});

В качестве дополнительного бонуса BBQ подключается к onhashchange современных браузеров. событие, а не опрос изменений в location.hash.

person josh3736    schedule 04.09.2012