使用JQuery,如何在IE中使用style属性定位元素?

时间:2011-03-03 16:20:02

标签: jquery css internet-explorer jquery-selectors target

使用JQuery,我的目标是:

<li style="margin-left: 15px;">blah<li>

使用此代码:

$(".block-category-navigation li[style='margin-left: 15px;']").addClass('sub-menu'); 

它在Firefox中运行良好,但在IE中根本不起作用。 IE会忽略样式选择器吗?无论如何,如果是这样

3 个答案:

答案 0 :(得分:5)

在IE8的控制台中查看后,我发现它正在将'margin-left'变成'MARGIN-LEFT'。

在IE中,此选择器将起作用:

$(".block-category-navigation li[style='MARGIN-LEFT: 15px']").addClass('sub-menu'); 

你可以同时拥有上限和下限。小写选择器,或使用循环来检查样式属性,如下所示:

$('.block-category-navigation li[style]').each(function() {
    $this = $(this);
    if ($this.attr('style').match(/margin-left: 15px/i)) {
        $this.addClass('sub-menu');
    }
});

更新

由于我不想给你不适用的代码,我在这里设置了这个工作示例:http://jsfiddle.net/YB7uV/6/

答案 1 :(得分:3)

您可以将marginLeft css属性与each()方法一起使用...不确定是否有更好的方法

$(".block-category-navigation li[style]").each(function(){
 if($(this).css("marginLeft") == '15px')
    $(this).addClass("myclass");

});

答案 2 :(得分:0)

我们需要查看包含ul标记的代码以及使用所有样式的样式表。这可能是你处理CSS的方式,而不是jQuery。我会说你的连字符使用是令人担忧的,尽管如前所述,如果没有完整的图片,很难诊断。由于您在名称中添加了带连字符的类,因此jQuery可以将该类引用为属性而不是字符串。 Firefox在处理Javascript方面更优雅,因此如果命名关闭,IE可能会忽略类添加。您也可以尝试将该类从sub-menu更改为submenu,然后查看IE是否更好地播放。