当我点击某些点击事件时,我试图从最近的<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);}
);
任何帮助解决这个问题都将非常感激。
答案 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或类。