如何访问jQuery对象的特定子节点?

时间:2016-03-09 10:45:50

标签: javascript jquery html

所以我有这张桌子。

<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()但是导致了错误。我对jQuery有非常基本的了解。请帮忙。

2 个答案:

答案 0 :(得分:0)

您也可以使用has选择器

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

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

} );

或者可能只是上面提到的parent()的prev()

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

答案 1 :(得分:0)

您可以找到带有检查输入的tr,然后在第二个td中找到输入,如

&#13;
&#13;
$('button').click(function() {
  $('#mytable tr:has(input:checked) td:nth-child(2) input').each(function() {
    snippet.log(this.value)
  });
})
&#13;
<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>
&#13;
&#13;
&#13;