Наиболее краткий способ обратиться к вновь созданному объекту в jQuery? - PullRequest
2 голосов
/ 23 октября 2009

У меня есть функция, вызываемая по щелчку ссылки в ТД. После щелчка я перехожу обратно по DOM к TR, внутри которого была ссылка, а затем создаю новый TR после него.

Пока все хорошо.

Теперь, когда я создал этот новый ТР с ТД внутри, лучше всего обратиться к этому вновь созданному ТД. Или мне нужно вернуться обратно в новый TD, созданный мной из исходного объекта, по которому щелкнули?

$("td.expandable a").click(function(){
    // figure out the number of columns we need to span
    var colspan;
    colspan = $(this).parents("tr").children("td").size();

    // insert the new TR
    $(this).parents("tr").after("<tr><td colspan=' & colspan & '></td></tr>");

    // **what syntax would I use here to refer to the above made TD?**

    return false;
});

Ответы [ 2 ]

1 голос
/ 23 октября 2009
$("td.expandable a").click(function(){
        // figure out the number of columns we need to span
        var colspan = $(this).parents("tr").children("td").size(),
            tr = $("<tr><td colspan=' & colspan & '></td></tr>");

        // insert the new TR
        $(this).parents("tr").after(tr);

        // **what syntax would I use here to refer to the above made TD?**
        tr.find('td')

        return false;
});

Вы также можете заменить parents на closest, если обновляете one tr. Альтернативным, но более ручным способом было бы сделать ... $(this).parents('tr').next().find('td')

0 голосов
/ 23 октября 2009

insertAfter (). Wrap () удобны для вещей такого типа:

$('td.expandable a').click(function() {
    var $parent = $(this).parents('tr');
    var colCount = $parent.children('td').size();
    var $td = $('<td colspan=' + colCount + '></td>');
    $td.insertAfter($parent).wrap('<tr></tr>');
    return false;
});

Я использовал оператор конкатенации строк "+". «&» используется для целых чисел для вычисления побитового И.

...