2011-04-28 57 views
1

有沒有人如何獲得帶有jquery的單詞'map'的類名?我使用下面的代碼來獲取帶有map的類名(例如class =「mapTest」),但如果類包含2個名稱(例如class =「abctest map test」),則不起作用。有誰知道我該如何修復它?我怎樣才能得到類名包含'地圖'在jQuery中?

 $(":input[class^=map]").each(function(index, element) { 
     map_array.push(this.className); 
    }); 

回答

4

你接近,你想*=,不^=

$(':input[class*="map"]').each(function(index, element) { 
    map_array.push(this.className); 
}); 

這是 「屬性包含」 選擇(jQuery docsCSS spec)。


關於報價:他們可選如果你要搜索的值符合一個CSS identifier的定義(您map值確實,例如)。如果你匹配的東西不符合該定義(如其中有空格的任何東西,或者以未轉義的數字開頭),則它們需要

由於行情是從來沒有,最好經常使用它們,但你不知道,如果你知道你正在尋找像map一件簡單的事情。

0

嘗試使用~=代替。它在多個類的情況下檢查它是否包含文本。

$(":input[class~=map]").each(function(index, element) { 
     map_array.push(this.className); 
    }); 

編輯:對不起,我應該澄清。這是爲了匹配時有多個類。 (如果你有class =「map blahmap」)它只會匹配map,因爲*=會匹配兩者 - 當你試圖檢查某個類是否在多個類中有特定的類名時,這會更有用)

+0

這將不匹配'mapTest',只匹配'map'。 '〜='匹配完整的單詞。 – kapa 2011-04-28 07:06:53

+0

'〜='不檢查「map」作爲子字符串,而是作爲空格分隔列表中的元素:http://www.w3.org/TR/css3-selectors/#attribute-representation在處理CSS類時通常很方便,但OP給出了類「mapTest」的例子,這不匹配。 – 2011-04-28 07:07:39