2016-03-09 4 views
-2

Итак, у меня есть эта таблица.Как получить доступ к определенному ребенку объекта jQuery?

<table id="mytable"> 
<tr> 
    <td><input type="text"/></td> 
    <td><input type="text"/></td> 
    <td><input type="checkbox"/></td> 
</tr> 
<tr> 
    <td><input type="text"/></td> 
    <td><input type="text"/></td> 
    <td><input type="checkbox"/></td> 
</tr> 
</table> 

Теперь я хочу, чтобы извлечь из пользовательского ввода второго текстового поля, но только для тех строк, которые имеют галочку. Я могу выбрать и распечатать флажки, проверенные с помощью этого кода jQuery.

var x = $('#mytable td input:checked'); 
$.each(x, function(key, value) { 
    console.log(value) 
}); 

Я не уверен, как получить данные в поле ввода данного объекта, я попытался с помощью .children(), но это привело к error.I очень базовые знания Jquery. Пожалуйста помоги.

+1

https://jsfiddle.net/arunpjohny/xsfkexeb/2/ –

+0

['$ (this) .closest ('td'). Prev(). Find ('input'). Val()'] (https : //jsfiddle.net/tusharj/jbtzbaz1/) – Tushar

ответ

0

Вы можете найти ВУ с проверили входы затем найти вход во втором тд как

$('button').click(function() { 
 
    $('#mytable tr:has(input:checked) td:nth-child(2) input').each(function() { 
 
    snippet.log(this.value) 
 
    }); 
 
})
<script src="https://tjcrowder.github.io/simple-snippets-console/snippet.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table id="mytable"> 
 
    <tr> 
 
    <td> 
 
     <input type="text" /> 
 
    </td> 
 
    <td> 
 
     <input type="text" /> 
 
    </td> 
 
    <td> 
 
     <input type="checkbox" /> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     <input type="text" /> 
 
    </td> 
 
    <td> 
 
     <input type="text" /> 
 
    </td> 
 
    <td> 
 
     <input type="checkbox" /> 
 
    </td> 
 
    </tr> 
 
</table> 
 
<button>Print</button>

+0

Спасибо всем, кто ответил, Это, несомненно, увеличило мое понимание селекторов. :) –

0

Вы можете также использовать имеет селектор

$('#mytable td:has(input:checked)').find("input[type='text']:last").each(function(){ 

    console.log($(this).val()); 

}); 

Или может быть просто пред() родителя() уже упоминалось выше

$('#mytable td input:checked').each(function() {  
    console.log($(this).parent().prev().find("input").val()); 
}); 
+0

'.last()' и ': last' возвращает ** отдельный ** элемент. Почему «каждый» на нем. Попробуйте интегрироваться в скрипке – Tushar

+0

@Tushar Извините, я имел в виду, что 'Используйте prev(), как то, как Tushar упомянул выше. – gurvinder372

+0

No prob. Просто хотел сказать вам, что код был неправильным. – Tushar

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