2013-09-01 3 views
1

Может кто-нибудь сказать мне, как я могу получить innerHTML первого tda якорь? Кажется, я не прав. То, что я ищу, это значения «тест 1» и «тест 2».Как получить innerHTML вложенных узлов

<tr> 
    <td data-pid="2"><a data-pid="2" href="#"><a href="#">test 1</a></td> 
    <td><a data-pid="2" class="manage-icon" href="#"><img alt="" src="delete.png"></a></td> 
</tr> 
<tr> 
    <td data-pid="3"><a data-pid="3" href="#">test 2</a></td> 
    <td><a data-pid="3" class="manage-icon" href="#"><img alt="" src="delete.png"></a></td> 
</tr> 

EDIT: Извините за не объясняя это событие. Мне нужна внутренняяHTML для строки, на которую я нажимаю. Итак, если я нажму на строку 33, и ее значение будет «test 33», это то, что мне нужно увидеть.

Я использую функцию, нажмите:

$(document).on("click",".manage",function(e){... 
+0

На каком случае, в ответ на *какие*? Вы хотите, чтобы как 'test1' *, так и' 'test2' в каждом случае, и как строка или как массив? Когда вы говорите, что вы не можете понять это правильно, можете ли вы показать нам, что вы пробовали? –

ответ

4

Попробуйте это, предполагая, что вы нажав на изображение (если вы хотите, чтобы вызвать по ссылке, а не просто изменить img к a):

$('img').click(function() { 
    console.log($(this).closest('tr').find('a').html()); 
}); 

Однако ваш HTML-код имеет ошибку (закрытый якорь).

jsFiddle example

+0

Это возвращает значение для первой строки, а не второе, которое я нажимал на – NaN

+0

Обновлено относительно относительно изображения или ссылки. – j08691

+0

Спасибо, Дж. Я попробую это сейчас. – NaN

3

Я хотел бы предложить:

$('tr').click(function(){ 
    var aText = $(this).find('td:first-child a').html(); 
}); 

JS Fiddle demo.

Обратите внимание, что в демо, я есть отредактировали HTML элементов первой строки, чтобы соответствовать формату первых td «s элементов во второй строке (дополнительный a открывающий тег, казалось бы ошибку, но если он был преднамеренным, тогда в jQuery можно внести поправки).

Ссылки:

+0

Спасибо Дэйв. Я попробую это сейчас – NaN

+0

Предпочитайте прикованные нахождение вызовов по многоэлементным запросам (например, используйте '$ (this) .find (" td: first-child "). Find (" a ")' вместо '$ (this) .find ("td: first-child a") '), поскольку они работают быстрее. –

+0

Дэйв, что именно называется «этим»? – NaN

0

Чтобы получить значение innerHtml, которое вы упомянули test1, test2 вы можете использовать .text() функцию как этот

$('td a').text(); 

Если вы хотите взять первый ребенок тд, то вы можете сделать это: $('td:first-child a').text();

0

Для значения Я думаю, что вы имеете в виду text
КСТАТИ у вас ошибка в этой строке:

<td data-pid="2"><a data-pid="2" href="#"><a href="#">test 1</a></td> 
              ^^^^^^^^^^^^ extra 

и чем это может помочь: LIVE DEMO

$('table tr').click(function(e){ 
    e.preventDefault();     // prevent unwanted anchor click behavior 
    var txt = $('td a', this).text(); // use .html() if you need to 
    alert(txt);      // Test text value 
}); 

если вы заполнить динамически табличного строки, чем идти с:

$('table').on('click', 'tr', function(e){ 
+0

Спасибо Роко за ответ. Я все равно попытаюсь это сделать и посмотрю, работает ли это. Я все еще пытаюсь узнать дорогу JQ – NaN

+0

Это странно, потому что я ничего не получаю с кодом. Что работает: '$ (this) .closest ('tr'). Find ('a'). Html();' – NaN

Смежные вопросы