我完成了jQuery网站的编码,但我发现IE9不支持.live jQuery,实际上也不支持任何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;
});
答案 0 :(得分:0)
正如其他人所指出的那样,请确保您的HTML结构有意义,即将主要内容放在li <li><a href="">blah</a></li>
而不是<a href=""><li>blah</li></a>
<li>
是一个结构化列表,执行上述操作没有结构意义,也不是正确的做事方式。
如果您的目标是让锚占据列表项的全部内容,那么将锚定为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() { });