У меня есть структура HTML, например:
<tr class = "@rowOrdinal" id = "...">
<td>
<a href = "#">
<img src = "/Content/updateIcon.gif" class = "updateResourceImageButton" id = "..." />
</a>
<a href = "#">
<img src = "/Content/cancelIcon.gif" class = "cancelImageButton" />
</a>
</td>
<td class = "hiddenColumn" id = ...>...</td>
<td class = "resourceKeyColumn" id = ...>...</td>
... and so on...
Когда щелкнули ссылку обновления, я хотел бы получить ссылку на строку, т. tr
Элемент tr
в котором была гиперссылка обновления.
Итак, в нижеприведенном слушателе событий я хотел бы подняться на иерархию DOM на несколько уровней. Я мог бы использовать простой JavaScript и использовать while
цикл, чтобы получить parentNode
, но как бы я сделать это с помощью JQuery?
function WireHandlers() {
$('.updateResourceImageButton').click(UpdateResourceLinkClickedHandler);
}
function UpdateResourceLinkClickedHandler() {
// how do I get a reference to the tr that contains
// the hyperlink which is the source of this event?
}
$(document).ready(function () { WireHandlers(); });
Вы ищете метод .closest()
:
function UpdateResourceLinkClickedHandler() {
var $tr = $(this).closest('tr');
}
function WireHandlers() {
$('.updateResourceImageButton').click( function(){
var trParent = $( this ).parent().parent();
UpdateResourceLinkClickedHandler();
});
}
Не знаете, почему вам нужна ссылка на родительский tr, поэтому не использовал ее в моем примере