2011-01-14 46 views
0

我有一個XPath相當於給定xpath的jQuery css表達式?

//tbody[1]/tr[1]/td[3]/b[1]/a[1] 

,想跟隨此格式jQuery的等效CSS表達式:

tbody:eq(0)>tr:eq(0)>td:eq(2)>b:eq(0)>a:eq(0) 

我預計$("tbody:eq(0)>tr:eq(0)>td:eq(2)>b:eq(0)>a:eq(0)").length回到比賽,但沒有找到。

既不$("tr:eq(0)>td:eq(2)>b:eq(0)>a:eq(0)").length$("td:eq(2)>b:eq(0)>a:eq(0)").length返回任何匹配。

$("b:eq(0)>a:eq(0)").length但是被發現。

後者爲什麼會起作用,但前者起始於tr:eq(0)td:eq(2),不起作用?

+0

您必須顯示標記。我並不是說我們無法從xpath中推斷出它,但仍然比...更安全。 – 2011-01-14 09:41:20

+0

這應該可行,[sample](http://jsfiddle.net/reigel/Fj3Us/)。考慮到你得到了正確的標記。 – Reigel 2011-01-14 09:45:02

回答

2

與XPath的jQuery選擇的翻譯看起來好像沒什麼問題,它似乎工作:

Live example

HTML:使用

<table> 
    <tbody> 
    <tr> 
     <td>Zero <b>bold <a href='#'>link1</a> <a href='#'>link 2</a></b></td> 
     <td>One <b>bold <a href='#'>link1</a> <a href='#'>link 2</a></b></td> 
     <td>Two <b>bold <a href='#'>link1</a> <a href='#'>link 2</a></b></td> 
     <td>Three <b>bold <a href='#'>link1</a> <a href='#'>link 2</a></b></td> 
     <td>Four <b>bold <a href='#'>link1</a> <a href='#'>link 2</a></b></td> 
     <td>Five <b>bold <a href='#'>link1</a> <a href='#'>link 2</a></b></td> 
    </tr> 
    <tr> 
     <td>Zero <b>bold <a href='#'>link1</a> <a href='#'>link 2</a></b></td> 
     <td>One <b>bold <a href='#'>link1</a> <a href='#'>link 2</a></b></td> 
     <td>Two <b>bold <a href='#'>link1</a> <a href='#'>link 2</a></b></td> 
     <td>Three <b>bold <a href='#'>link1</a> <a href='#'>link 2</a></b></td> 
     <td>Four <b>bold <a href='#'>link1</a> <a href='#'>link 2</a></b></td> 
     <td>Five <b>bold <a href='#'>link1</a> <a href='#'>link 2</a></b></td> 
    </tr> 
    <tr> 
     <td>Zero <b>bold <a href='#'>link1</a> <a href='#'>link 2</a></b></td> 
     <td>One <b>bold <a href='#'>link1</a> <a href='#'>link 2</a></b></td> 
     <td>Two <b>bold <a href='#'>link1</a> <a href='#'>link 2</a></b></td> 
     <td>Three <b>bold <a href='#'>link1</a> <a href='#'>link 2</a></b></td> 
     <td>Four <b>bold <a href='#'>link1</a> <a href='#'>link 2</a></b></td> 
     <td>Five <b>bold <a href='#'>link1</a> <a href='#'>link 2</a></b></td> 
    </tr> 
    </tbody> 
</table> 

JavaScript的jQuery的:

var match = $("tbody:eq(0)>tr:eq(0)>td:eq(2)>b:eq(0)>a:eq(0)"); 
alert("match.length = " + match.length); 
match.css({ 
    "color": "red", 
    "border": "1px solid black" 
}); 

我收到警告,比賽長度爲1(如預期的那樣),並且由此產生的突出顯示的鏈接看起來對我來說是正確的。