2011-07-21 211 views
0

选择特殊的索引考虑下面的代码:具有特殊属性值

<table border="1" width="100%" id="list"> 
    <tr> 
     <th>name</th> 
     <th>age</th> 
     <th>city</th> 
    </tr> 
    <tr> 
     <td o="1">aaa</td> 
     <td o="2">20</td> 
     <td o="3">zzzzzzzz</td> 
    </tr> 
    <tr> 
     <td o="2">hhhhhhh</td> 
     <td o="3">55</td> 
     <td o="1">aaaaaaa</td> 
    </tr> 
    <tr> 
     <td o="3">qqqqq</td> 
     <td o="1">15</td> 
     <td o="2">qq</td> 
    </tr> 
</table> 

如何,我可以选择包含有属性TD ROW(TR)(O = 2),在N列 appeare?!

我尝试这一点,但不工作:

$("table#list tr").filter(':has(td:eq(0)[o="2"])')... 
+2

我不记得看到在HTML规范该属性。 –

+0

将“o”替换为“value”或任何你想要的值! :) – ali

回答

0

试试这个

$("table#list tr").filter(function(){ 
    return $(this).find("td:nth-child(1)[o='2']").length > 0; 
    //nth-child is indexed from 1 
}); 
+0

谢谢。但如果我想要** n-child **而不是FIRST,我该怎么办?! – ali

+0

检查我编辑了我的答案。 – ShankarSangoli

+0

@ali - 你尝试过吗? – ShankarSangoli

0

试试这个:

function getNthChild(n) { 
    return $('#list td:eq(' +n + ')[o="2"]').closest('tr'); 
} 

的jsfiddle:http://jsfiddle.net/mrchief/Bhtdr/3/

+0

'$(“#list tr”)。filter(':has(td [o =“2”])')'is faster – binarious

+0

这个问题只说了_first_列中的单元格。这将选择那些在其他列中的。没有必要使用'.filter' - 你可以在一个选择器中做所有事情。 –

+0

谢谢马特。 你的代码选择TR包含TD有o = 2属性 但我希望TD具有'o = 2'属性,**是N-index在它的TR **中。 – ali

0

你可以做一个单一的选择:

$("table#list tr td:first-child[o=2]").. 

使用nth-child选择与属性o="2"细胞在第二列,例如:

$("table#list tr td:nth-child(2)[o=2]").. 
+0

谢谢。但如果我想要** n-child **而不是FIRST,我该怎么办?! – ali

+0

错误..使用'n-child'? $(“table#list tr td:nth-​​child(1)[o = 2]”)' –

+0

nth-child()与eq()类似,都发生错误 – ali