#javascript #jquery #internet-explorer #events #click
#javascript #jquery #internet-explorer #Мероприятия #нажмите
Вопрос:
Следующий код в IE7 или IE8 не работает. Это ошибка? Он отлично работает в IE6 (невероятно!)
Комментарии:
1. У меня это работает в IE7 и IE8. Вызывали ли вы панель разработчика в IE8 и пытались ли отладить JS?
2. Я использую ietester, так что, возможно, именно поэтому…
3. Да, я был непосредственно в браузере, и это сработало отлично… Я использовал IE7, режим Quriks IE7, стандарт IE8 и особенности IE8… странно.
Ответ №1:
Попробуйте использовать live
событие или привязать событие после document
загрузки:
$('#clickme').live('click', function(){
alert('hey');
});
Кроме того, вы все еще загружаете scripts.js
то, чего не существует в вашем примере с fiddle — это также может вызвать проблему.
Комментарии:
1. Нет! Это все еще не работает. Это сводит меня с ума! Я обновил код здесь jsfiddle.net/zgSmT/4 . Есть другие идеи?
2. Live действительно хорош, только если вы добавляете одно и то же событие к куче разных объектов. Если у вас есть только один объект, то добавление прослушивателя событий с помощью click — это то же самое.
3. @El Guapo: Нет,
live
гарантирует, что даже если элемент, соответствующий селектору, будет создан (добавлен в DOM) после выполнения javascript, событие все равно будет привязано. С помощьюclick
событие будет привязано только в том случае, если элемент уже существует в DOM.4. Ок, значит, это, должно быть, ошибка ietester. Я установил ie9 в своей системе, и теперь единственный способ протестировать эти вещи — ietester или виртуальная машина, поэтому мне придется использовать виртуальную машину.
5. Жаль, что я не нашел этот ответ час назад. Также хотелось бы, чтобы я мог дать вам больше голосов. Действительно спасло меня в этом. Проклятый старый IEs
Ответ №2:
Вы могли бы попробовать
$().ready(function ()
{
$('#clickme').live('click', function(){
alert('hey');
});
}
Чтобы убедиться, что все загружено.