2011-07-17 83 views
0

如何使用jQuery來選擇不包含以字符串'upper'開頭並且不包含以字符串'lower'開頭的類的所有div元素。我嘗試了以下幾個例子,但沒有成功:jQuery沒有類匹配選擇器

$('div:not([class^=upper])').filter(':not([class^=lower])') 

$('div').not('[class^=upper])').not('[class^=lower])') 

請指教...

+0

這似乎爲我工作得很好http://jsfiddle.net/D3BCJ/ – ingo

+0

對我來說,返回所有div的,並不會過濾出那些基於非條件的人。你確定它不適合你嗎? – harrije

+0

如果沒有多個類,則會顯示所有選項。因爲上層和下層不是首先出現在空格分隔的列表中,直到我將其更改爲[class * = upper]和[class * = upper],操作才失敗。對於boondoggle,對此投票感到不滿題。 – harrije

回答

0

這是一個有點冗長,但它應該做的伎倆 -

$('div').filter(function() { 
    return $(this).attr("class").substring(0,5).toLowerCase() != 'upper' && $(this).attr("class").substring(0,5).toLowerCase() != 'lower' 
}) 
0

試試這個:not selector

$('div:not([class^=upper,class^=lower])'); 
0

你要引用比較中的字符串值。在上面的任一示例中,將lower替換爲"lower"。對鞋面做同樣的事情。

+0

嵌套的引號沒有任何區別。儘管大多數腳本都使用嵌套引號,但「jQuery in Action」中的示例並不是這樣,這就是爲什麼我最初將它們關閉的原因。 – harrije