Ну, во-первых, проверили ли вы консоль разработчика (F12) на наличие ошибок. Вы уверены, что ссылались на библиотеку JQuery.
Далее, даже со ссылкой на JQuery, .closest()
будет искать элементы-предки элемента, к которому вы обращаетесь. Если ваша кнопка не является потомком элемента, который вы хотите найти, вы не найдете его.
Теперь, предполагая, что .closest()
действительно находит вашу строку, вы затем запрашиваете .text()
во всей строке. Это может быть то, что вы хотите, но, скорее всего, вам нужно, чтобы ячейка данных за ячейкой.
Кроме того, ваша кнопка - это кнопка submit
, которая используется для отправки данных формы, но не похоже, что вы здесь делаете. Если это так, используйте обычную кнопку.
И ваш HTML-код недействителен, так как у вас плохой закрывающий тег для вашей ячейки.
Итак, исправляя все это:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr class='rowdata'>
<td>Bob</td>
<td>Smith</td>
<td><input type='button' class='getRow' value='ClickMe'></td>
</tr>
</table>
<script>
$(".getRow").click(function() {
var rowOfData = $(this).closest(".rowdata");
alert(rowOfData.text()); // Gets all the text in the row
alert($("td:first-child", rowOfData).text()); // Gets just first cell
});
</script>