#internet-explorer-9 #jquery
#internet-explorer-9 #jquery
Вопрос:
Я закончил кодирование своего сайта jQuery, но я нашел это.live jQuery не поддерживается в IE9 или фактически в любом IE.
По крайней мере, таков мой опыт.
Мне интересно, как заставить IE выполнить следующее
$('ul#mainmenu a li').live('click', function(event){
//alert(this.id);
$("li#" lastpageid).removeClass();
fetchpage(this.id);
var text = '';
$('a li#' this.id '').contents().each(function(){
if(this.nodeType === 3){
text = this.wholeText;
}
});
$("#largemenutop").html(text);
$("li#" this.id).addClass("active");
lastpageid = this.id;
});
Комментарии:
1. Почему у вас должны быть
<li>
‘s внутри якорей? Ваши селекторы не имеют никакого смысла. Работает ли это в каких-либо других браузерах, таких как Firefox или Chrome?2. tylermwashburn верен, вам действительно следует изменить свой html, чтобы гиперссылки были внутри
<li>
s3. Если вы откроете инструменты разработчика IE, перейдете на консоль и запустите
$('ul#mainmenu a li').length
возвращает ли он количество элементов, которое вы ожидаете?4. Вы должны использовать
$(this)
вместо$("li#" this.id)
. Однако это не решит вашу проблему.
Ответ №1:
Как указывали другие, убедитесь, что ваша структура HTML имеет смысл, т. е. поместите якорь ВНУТРИ li <li><a href="">blah</a></li>
не <a href=""><li>blah</li></a>
<li>
это структурированный список, выполнение вышеуказанного не имеет структурного значения и не является правильным способом выполнения действий.
Если ваша цель состоит в том, чтобы привязка полностью занимала элемент списка with, тогда сделайте привязку блочным элементом в CSS: li a { display: block; }
В любом случае, вы могли бы попробовать использовать .delegate
в этой ситуации. Я реструктурировал ваш код, я предполагаю, fetchpage
что он работает так, как ожидалось.
var $lastAnchor = jQuery();
$('#mainmenu').delegate('a', 'click', function() {
var $this = $(this);
$lastAnchor.removeClass('active');
fetchpage(this.id);
$('#largemenutop').html(
$this
.addClass('active')
.contents()
.filter(function() { return this.nodeType == 3; })
.text()
);
$lastAnchor = $this;
});
Убедитесь, что все внутри $(document).ready(function() { });