2011-03-03 94 views
0

使用jQuery,我瞄准了以下内容:使用JQuery,我如何使用IE中的样式属性来定位元素?

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

与此代码:

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

在Firefox的伟大工程,但不能在IE在所有的工作。 IE忽略样式选择器吗?无论如何如果是这样的话

+0

如果你有很多列表“style = margin-left:15px;”我会把它放在一个类中,例如class =“margin_left”,然后你做这个$('li')。hasClass('margin_left')。addClass('sub-menu'); – nolabel 2011-03-03 17:13:39

+0

我不能,使用可怕的CMS,因此我正在使用的尴尬的方法.... – 2011-03-03 17:19:33

回答

5

在IE8的控制台检查之后,我发现它的转向“与容限左'进入'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'); 
    } 
}); 

UPDATE

因为我不想让你的代码不起作用,所以我设置了这个工作例子在这里:http://jsfiddle.net/YB7uV/6/

+0

我的风格是“浮动:左”,我试过各种帽子和空间,但没有运气,但你的每个功能诀窍。谢谢。我认为jQuery应该为我们解决这个问题;( – henrijs 2011-05-17 21:55:36

0

我们需要看代码,包括ul标签以及使用所有样式的样式表。这很可能是你处理CSS的方式,而不是jQuery。我会说你的连字符的使用是值得关注的,但正如我之前所说的,没有完整的图片很难诊断。既然你在名称中添加了一个带有连字符的类,jQuery可能会将该类引用为属性而不是字符串。 Firefox在处理Javascript时更加优雅,因此如果命名关闭,IE可能会简单地忽略类的增加。您也可以尝试将该课程从sub-menu更改为submenu,然后查看IE是否更好。

3

可以使用marginLeft CSS属性与每个()方法......不知道是否有一个更好的办法,虽然

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

}); 
相关问题