2009-10-15 57 views
2

我有一个jQuery脚本,用于选择其中包含'Phone'的所有ID。但是,我有一小部分,如果他们在课堂上,则不需要选择它们。如何使用jQuery选择不在特定类中的ID

我有什么,按照我的理解它的方式是这样的:

$("[id*='Phone']:not('referencePhones')").doSomething(); 

我缺少什么?

.referencePhones是父类。即:

div class="referencePhones" 
    span id="Phone" 

回答

3
$("[id*='Phone']").parent(":not('.referencePhones')").css("color","red"); 

和你的代码看起来像下面这样吧?

<div class="referencePhones"> 
    <span id="Phone2">phone2</span> 
    <span id="Phone3">phone3</span> 
    <span id="Phone4">phone4</span> 
    <span id="Phone5">phone5</span>  
</div> 

<div class="zzz"> 
    <span id="Phone6">phone6</span> 
    <span id="Phone7">phone7</span> 
    <span id="Phone8">phone8</span> 
    <span id="Phone9">phone9</span>  
</div> 
+2

我知道你接受了这个答案,虽然它“有效”,但它不是最好的解决方案。酸葡萄,但我的解决方案要快得多,因为它只会搜索带有手机ID而不是页面上每一个元素的'span',就像这个解决方案所说的那样。 – Jason 2009-10-15 22:51:36

+2

Jason说的是真的。 – easement 2009-10-16 12:43:58

4

一个点?

$("[id*='Phone']:not(.referencePhones)").doSomething(); 
        ^
+0

不。试过了。那个班是父母。 .referencePhones #Phones – Mikecancook 2009-10-15 20:48:28

9

摆脱你的内部报价:

$('someElement[id*=Phone]:not(.referencePhones)').doSomething(); 

编辑

$('span[id*=Phone]').parent('div:not(.referencePhones)').doSomething(); 
+0

还是没有爱。 ; o( – Mikecancook 2009-10-15 20:59:36

+0

你必须使用filter()和is(!referencePhones)一起使用;当我有一段时间生病时,用你编辑的新信息给你写选择器 – adardesign 2009-10-15 21:07:13

+0

,事情会改变... – Jason 2009-10-15 21:41:43

0

OP要求选择带有“phone”的id的跨度,只要它们不包含在class为“referencePhones”的div中。所有使用parent()的解决方案都会返回父div,而不是span。

以下选择返回跨度:

$('div:not(.referencePhones) span[id*="Phone"]') 
相关问题