Пройдите несколько уровней вверх по иерархии DOM к строке содержащей таблицы

0

У меня есть структура HTML, например:

<tr class = "@rowOrdinal" id = "...">                            
    <td>
        <a href = "#">
            <img src = "/Content/updateIcon.gif" class = "updateResourceImageButton" id = "..." />
        </a>
        &nbsp;

        <a href = "#">
            <img src = "/Content/cancelIcon.gif" class = "cancelImageButton" />
        </a>
        &nbsp;
    </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(); });
Теги:

2 ответа

3
Лучший ответ

Вы ищете метод .closest():

function UpdateResourceLinkClickedHandler() {
    var $tr = $(this).closest('tr');
}
  • 0
    Король вау! JQuery великолепен! Это именно то , что я искал. Большое спасибо. :-)
  • 0
    @ WaterCoolerv2 Добро пожаловать :)
Показать ещё 1 комментарий
1
function WireHandlers() {
    $('.updateResourceImageButton').click( function(){

        var trParent = $( this ).parent().parent();
        UpdateResourceLinkClickedHandler();
    });
}

Не знаете, почему вам нужна ссылка на родительский tr, поэтому не использовал ее в моем примере

  • 0
    Вы также можете сделать var trParent = $ (this) .parent ("tr");
  • 0
    Большое спасибо, Гурвиндер. Это так просто. Я люблю JQuery. :-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню