jQuery - IE 6,7不支持$(this)?

时间:2009-09-26 12:43:32

标签: jquery internet-explorer this

嘿,我有一个代码,适用于所有现代浏览器,但不适用于IE 6,7。

$('.cat1').toggle(function() {

    $(this).parent('li').next('ul').slideUp(); 
    $(this).css('background-position', '0px 0px');

    return false;

}, function() {

    $(this).parent('li').next('ul').slideDown(); 
    $(this).css('background-position', '-210px 0px');

    return false;

});

它会进行背景位置更改,但不会执行slideUp或slideDown,为什么会这样做?

我认为这是因为$(这个),但我不确定,如果是的话,有没有办法让它发挥作用?

编辑:似乎问题可能出在'next()'函数中。

2 个答案:

答案 0 :(得分:1)

显然,$(this)有效,或者背景位置也不会改变。我怀疑它与选择哪些元素有关,或者更确切地说没有被选中。我建议(因为它是IE),你打破了选择,并做了一些警告,以确定哪些元素实际被选中。也许IE在你点击的元素和你认为应该是它的父元素的列表元素之间在DOM中插入一些额外的元素。如果是这种情况,更改为使用最接近('li')将是一种在树中导航以获取包含列表元素的方法。

答案 1 :(得分:0)

这可以通过在jQuery中使用noConflict来解决。这是解释它的jQuery文档的链接:http://docs.jquery.com/Core/jQuery.noConflict