2009-05-06 86 views
1

我使用jQuery來得到一些網站presaved元素的值,使用這樣的路徑:如何使用jQuery選擇器獲取此元素?

HTML BODY #bodyContainer #mainContentContainer #mainContent #productContentRight #swatchContent #colorSwatchContent SPAN

這個問題我當網站頁面包含表格並且在另一個相似路徑中存在相同元素時,例如:

/html/body/div/center/div/div [3]/div/table/tbody/tr [5 ]/TD/DIV /表/ TBODY /噸R/TD /表/ tbody的/ TR/TD /表/ tbody的/ TR [3]/TD

在最後的路徑,你可以看到有5 tr這意味着其能夠找到相同的元素在另一個路徑中。

我使用路徑作爲jQuery的選擇器,jQuery將返回元素數組,我不知道哪一個是正確的元素。

所以我的問題是:

如何保存路徑以備後用?以及如何解析這個新的路徑作爲jQuery選擇器。

如果問題不明確,請問我,我會盡我所能解釋更多。

回答

8

我不知道爲什麼有這麼多的答案,你正在使用XPath,因爲很久以前XPath已被棄用,jQuery不再支持它,沒有XPath兼容性插件。 1.2

參見發行說明:http://www.learningjquery.com/2007/09/upgrading-to-jquery-12

XPath的兼容插件:http://docs.jquery.com/Release:jQuery_1.2#XPath_Compatibility_Plugin

只需使用$("#colorSwatchContent span")爲您的選擇。這是一個css風格的seclector,意思是找到一個ID爲colorSwatchContent的元素的所有後代span元素。由於html中的id是唯一的標識符,因此您可以獲得更具體的信息。

$("#colorSwatchContent > span")將僅選擇直接後代(immedieate兒童)

$("#colorSwatchContent > span:first")將選擇第一跨度直系後裔

0

tr [5]並不意味着有5個trs(可能有10個!),這意味着它正在選擇第5個。

它看起來像我正在使用XPath選擇器來獲取您的元素...哪些jQuery支持。

如果你有HTML的控制,最簡單的方法來選擇一個特定的元素是給它一個ID ......這在你的第一個例子,

HTML BODY #bodyContainer #mainContentContainer #mainContent #productContentRight #swatchContent #colorSwatchContent SPAN 

是equivilant到

#colorSwatchContent SPAN 
+0

是肯定給它一個ID會解決一切,但網頁我說的是不能改變它的html – 2009-05-06 15:46:31

1

爲了抓住一個特定的元素,當有很多匹配的時候,你應該給元素類,例如給每個table一個類描述它裏面的內容,然後給每個tr一個描述這個行是關於什麼的類。然後,每個td與描述其描述,例如該行的特定部分的類:

<table class="person"> 
    <tr class="john-doe"> 
     <td class="name">John Doe</td> 
     <td class="phone-numbers"> 
      <table class="phone-numbers"> 
       <tr class="cell-phone"> 
        <th class="label">Cell Phone:</th> 
        <td class="number">555-1234</td> 
       </tr> 
       <tr class="home-phone"> 
        <th class="label">Home Phone:</th> 
        <td class="number">555-1234</td> 
       </tr> 
      </table> 
     </td> 
    </tr> 
</table> 

一旦你有你的元素適當的描述,那麼你可以在jQuery中使用CSS樣式選擇。例如想起來有家庭電話的td會因爲這樣那樣簡單:

$('table.person tr.home-phone td.number'); 

希望這可以讓你走向正確的道路。

有一點需要注意,如果你有非常複雜的表結構,你可能想重新考慮它是否需要在表中。

0

由於jQuery支持xpath,因此可以使用firebug獲取特定的xpath,然後在jQuery中使用它。

只需在firebug中瀏覽源代碼,右鍵單擊任意元素,然後選擇copy xpath。

相關問題