为什么.live不能在IE9中工作

时间:2011-06-03 06:58:51

标签: internet-explorer-9 jquery

我完成了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;
});

1 个答案:

答案 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() { });