如何从最接近的不同中获取价值

时间:2014-07-31 19:51:16

标签: jquery html jquery-selectors

当我点击某些点击事件时,我试图从最近的<tr>获取第三个文本,其中只包含<td>(在本例中为“cat”)之一中的指定文本。 下面是我的示例表,我想要获得的是,无论何时单击“click1或2或3”,来自最近/之前<td>的第三个<tr>文本都有“cat” 文本。

  

<table class="animals"> <tr> <td> cat </td> <td> dog </td> <td> tiger </td> </tr> <tr> <td> dog-1 </td> <td> dog-2 </td> <td> dog-3 </td> <td> <a href="#" class="drop">click1</a> </td> </tr> <tr> <td> cat </td> <td> mouse </td> <td> horse </td> </tr> <tr> <td> lion </td> <td> zebra </td> <td> camel </td> <td> <a href="#" class="drop">click2</a> </td> </tr> <tr> <td> goat </td> <td> cow </td> <td> sheep </td> <td> <a href="#" class="drop">click3</a> </td> </tr> </table>

如果单击“click1”,则只能从最近的(前一个)<tr>获取 tiger 。如果单击“click2”“click3”,则只能获得。我的代码给了我“虎”和“马”,无论点击哪一个。

$('.drop').click(function() {
  var val = $(this).closest('table').find('tr:contains("cat")').find('td:eq(2)').text();  
  alert(val);}
);  

任何帮助解决这个问题都将非常感激。

http://jsfiddle.net/5S5Pn/

2 个答案:

答案 0 :(得分:5)

$(this).closest('table').find('tr:contains("cat"):lt('+$(this).closest('tr').index()+'):last').find('td:eq(2)').text();  

jsFiddle:http://jsfiddle.net/5S5Pn/3/

答案 1 :(得分:-1)

这是一个可能的解决方案:

$('.drop').click(function() {
    var val = $(this).parent().parent().prev().find('td:eq(2)').text();
    alert(val);  
});

虽然不是很漂亮。与HTML布局紧密相关。您可能希望为每个tr标记添加带索引的id或类。