2011-03-03 35 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"); 

}); 
相關問題