2010-07-06 2 views
2

У меня есть таблица, которая генерируется динамически. И событие click на кнопке в одной из строк. Мне нужно получить значения меток с классами label1 и label2 в строке, на которую нажата кнопка. вот пример HTML:Вопрос о выборе цепочки JQuery

<table> 
<tbody> 
    <tr> 
     <td><label class="label1">test row 1 - label 1</label></td> 
     <td><label class="label2">test row 1 - label 2</label></td> 
     <td><input type="button" id="btnTest1" class='btn' value="Click me" /></td> 
    </tr> 
    <tr> 
     <td><label class="label1">test row 2 - label 1</label></td> 
     <td><label class="label2">test row 2 - label 2</label></td> 
     <td><input type="button" id="btnTest2" class='btn' value="Click me" /></td> 
    </tr> 
</tbody> 
</table> 

я могу получить родительскую строку, делая это: $(this).closest('tr'), но тогда как я цепь, чтобы получить 2 метки в строке Thats щелкнул?

ответ

1
$(this).closest('tr').find('.label1, .label2'); 

или, если вы уверены, что не будет никаких ненужных ярлыков:

$(this).closest('tr').find('label'); 
+0

Это не сработает. – user113716

+0

теперь будет работать – jigfox

+0

Да, намного лучше. – user113716

0

Вы ищете для всех детей текущего <tr> за исключением последнего:

$(this).parent().parent().children(':not(:last)') 

Final EDIT:

$(this).closest('tr').children(':not(:last)').children('label') 
+1

Это не даст вам ярлыков. – user113716

+0

исправлено это>. <Моя ошибка – Rixius

+0

Что такое 'children (': not (: last)')' для, просто '$ (this) .closest ('tr'). Children ('label')' будет такой же, но более короткий и более читаемый – jigfox

1

Чтобы получить ярлыки, сделайте следующее:

$(this).closest('tr').find('label'); 

Не знаете, что вы подразумеваете под значениями меток, но если вы хотите, чтобы текст метки s в массиве, вы можете сделать это:

var array = $(this).closest('tr').find('label').map(function() { 
    return $(this).text(); 
}).get(); 
+0

'$ (this) .closest ('tr'). Find ('input');' такое же, как и '$ (this)', потому что единственным нажатием кнопки является кнопка, которая нажимается. – jigfox

+0

@Jens - Да, я ошибочный 'input' вместо' label'. – user113716

+0

Да, намного лучше. ;-) – jigfox

-1
$(this).parent().parent().find('.label1').html() 

Даст вам значение содержимого строки в классе label1. В зависимости от того, что вы хотите сделать, вы можете в конечном итоге повторить что-то еще вот так:

$(this).parent().parent().find('.label1,.label2').each() 
+0

'$ (this) .parent()' вернет '', а не' ', и, таким образом, ярлыков не будет найдено. – jigfox

+0

Спасибо, что указали это на Jens. Исправлен пример кода. – HurnsMobile

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