2012-03-05 20 views
4

好的。我有點小白,但不是那個小白。 :)帶點符號的jQuery多選符號?確定。

我希望在jQuery中完成一個find(),它具有點符號或「& &」的相似結果。下面是一個例子(不工作):

data.find("continent_country[id = 'us'].state[id = 'in']").each(function(){ 
// what to do 
} 

data.find("continent_country[id = 'us'] && state[id = 'in']").each(function(){ 
// what to do 
} 

有人告訴我去嘗試一個逗號,像這樣:

data.find("continent_country[id = 'us'], state[id = 'in']").each(function(){ 
// what to do 
} 

...但是,返回錯誤的項目。

我的XML看起來是這樣的:

<continent_country id="us" name="U.S."> 
     <state id="al" name="Alabama"> 
      <city url="" name="auburn"/> 
      <city url="" name="birmingham"/> 
      <city url="" name="dothan"/> 
      <city url="" name="florence/muscle shoals"/> 
      <city url="" name="gadsden-anniston"/> 
      <city url="" name="huntsville/decatur"/> 
      <city url="" name="mobile"/> 
      <city url="" name="montgomery"/> 
      <city url="" name="tuscaloosa"/> 
     </state> 
     <state>//more states</states> 
    </continent_country> 
    </continent_country id="eu" name="Europe"> 
     <state>//more states</states> 
    </continent_country> 

一些州/省/國家都有相同的ID,這就是爲什麼我想在一個指定的continent_country找到了狀態。

在此先感謝...

+0

你thougt分離該選擇的?就像第一次你和我們一起得到所有的大陸國家,並且在這個選擇中,你再一次過濾所有的東西? – 2012-03-05 15:33:31

+0

我原來是這樣做的,但需要一個「一線解決方案」。孩子選擇器「>」完美地工作。 – TSNev 2012-03-05 16:21:11

回答

4

我想你想的孩子符號:

http://api.jquery.com/child-selector/

data.find('continent_country[id = 'us'] > state[id='in']).each(function(){ 
    //do your stuff here 
} 
+0

完美。非常感謝! – TSNev 2012-03-05 16:08:58

+0

很高興我能幫忙! – Patricia 2012-03-05 16:45:49

+0

哇3個downvotes?那些人怎麼了?這正是你想要的! – Patricia 2012-03-05 17:26:38

1

你可以只使用add()方法,增加了更多的元素,基於一個新的選擇,例如選擇

data.find("continent_country[id = 'us']").add("state[id = 'in']").each(function(){ 
    // what to do 
} 
+0

因爲它不需要是一個選擇問題 – soju 2012-03-05 15:39:26

+1

但這種方式仍然有效。正因爲有* *其他方式,但這並不意味着這種做法是錯誤 – danwellman 2012-03-05 15:45:20

+0

這不是因爲你調用額外的方法 – soju 2012-03-05 15:48:27

0

您可以使用:has選擇器,.has功能,或者選擇最接近continent_country上方的狀態。這是has函數,這可能是最有效的。

data.find("continent_country[id='us']").has("state[id='in']") 

這是假設你想要得到的<continent_country>元素......如果我誤解,你想要得到的<state>元素,使用空間:

data.find("continent_country[id='us'] state[id='in']") 
0

你能試試.has()方法?

data.find("continent_country[id = 'us']").has("state[id = 'in']").each(function(){ 
// what to do 
} 

這應該工作。

-1

如果你想有一個國家裏面,你應該使用一個descendant selectorcontinent_country[id='us'] state[id='in']

或者一個狀態child selectorcontinent_country[id='us'] > state[id='in']

你應該瞭解jquery selectors

+0

downvoter解釋你自己 – soju 2012-03-05 15:48:48