2013-08-05 60 views
4

我想要一个jQuery选择器来选择任何没有包含字符串'-text'的类的元素;选择没有任何包含字符串的类的元素

例如在以下几点:

<img class="cow" > 
<img class="monkey" > 
<img class="cow-text" > 
<img class="monkey-text" > 

我想选择:

<img class="cow" > 
<img class="monkey" > 

我知道我需要使用not,但我不能确定的格式。在没有项目的下列结果被选中:

$('.panel').find('.layer').not('[class*="-text"]');

+1

这可能是什么'panel',而不是你使用的选择器/链。 – ajp15243

+0

如果您在标记中包含任何具有“面板”类别的更新选择器,则会有更少的假设/推理/猜测。 – ajp15243

+0

注意:您应该考虑对类名称使用不同的架构以使其更容易。 (请不要说你不能更改HTML ...) – RoToRa

回答

2

如果该类始终以“-text”结束,你应该例如使用EndsWith选择

panel.find('img').not('[class$="-text"]'); 

或者

panel.find('img:not([class$="-text"])') 

这是一个更精确的解决方案中,通配符选择器装置等some-text-class-text-class类也将被错误地拾取。

1

尝试

panel.find('img').not('[class*="-text"]'); 
+0

对不起。愚蠢的错字。这不是问题。 – Undistraction

+0

@Pedr看起来很好http://jsfiddle.net/arunpjohny/Fr2HT/1/ –

+2

@Pedr也确保'panel'指的是正确的元素 –

0

试试找到所有的img元素,并删除所有,以-text结束。并使用每个多个元素。 例如类=“猴子文本”

$("img").not("[class$='-text']").each(function(){ 
    alert($(this).attr("class")); 
}); 

第二个预览显示了在开始字符串的字符串text-。只需将$更换为^ class =“text-monkey”

$("img").not("[class^='text-']").each(function(){ 
    alert($(this).attr("class")); 
}); 
+0

http://jsfiddle.net/MzkJC/ – M1K1O

相关问题