Я пытаюсь получить значение первого td в каждом TR, когда пользователи нажимают "щелчок".
Результат ниже произведет aa, ee или ii. Я думал об использовании самого близкого ('TR').. но это всегда производило "Объектный объект". Не уверенный, что сделать на этом.
Мой HTML
<table>
<tr>
<td>aa</td>
<td>bb</td>
<td>cc</td>
<td>dd</td>
<td><a href="#" class="hit">click</a></td>
</tr>
<tr>
<td>ee</td>
<td>ff</td>
<td>gg</td>
<td>hh</td>
<td><a href="#" class="hit">click</a></td>
</tr>
<tr>
<td>ii</td>
<td>jj</td>
<td>kk</td>
<td>ll</td>
<td><a href="#" class="hit">click</a></td>
</tr>
</table>
JQuery
$(".hit").click(function(){
var value=$(this).// not sure what to do here
alert(value) ;
});
$(this).parent().siblings(":first").text()
В конкретном случае, приведенном выше, вы могли жонглировать родителями и детьми. Вам следует избегать Это должно работать: Объяснение: Как вы можете видеть из других ответов, есть несколько способов сделать это. Установите firebug и используйте parent
дает вам
вокруг ссылки,
siblings
дает все теги
в этом
,
: first
дает первый согласованный элемент в наборе. text ()
дает содержимое тега. $(this).parents("tr").children("td:first").text()
$(".hit").click(function(){
var values = [];
var table = $(this).closest("table");
table.find("tr").each(function() {
values.push($(this).find("td:first").html());
});
alert(values);
});
$(".hit")
, это действительно неэффективно. Попробуйте вместо этого использовать делегирование событий.
$(".hit").click(function(){
var value=$(this).closest('tr').children('td:first').text();
alert(value);
});
.closest ('tr')
получает ближайшего предка, который является элементом
(так в данном случае строка, в которой находится элемент
).
.children ('td: first')
получает всех дочерних элементов этого элемента, но с помощью селектора : first
мы сокращаем его до первого
элемент.
.text ()
получает текст внутри элемента
console.log
вместо alert
. Тогда вы увидите, к какому элементу вы обращаетесь.
Похожие вопросы: