如何获取div元素的所有子输入(jQuery)

use*_*348 147 jquery jquery-selectors

HTML:

<div id="panel">
  <table>
    <tr>
       <td><input id="Search_NazovProjektu" type="text" value="" /></td>
    </tr>
    <tr>
       <td><input id="Search_Popis" type="text" value="" /></td>
    </tr>
  </table>
</div>
Run Code Online (Sandbox Code Playgroud)

我需要选择特定div中的所有输入.

这不起作用:

var i = $("#panel > :input");
Run Code Online (Sandbox Code Playgroud)

Nic*_*ver 286

使用它没有大于:

$("#panel :input");
Run Code Online (Sandbox Code Playgroud)

这种>方法只指导元素的子元素,如果你想要所有的孩子,无论深度只是使用空间.

  • @mnemosyn - 这是另一种类型的选择器,如`:checkbox',请参阅此处了解详情:http://api.jquery.com/input-selector/这里有一个更完整的列表:http:// api. jquery.com/category/selectors/form-selectors/ (11认同)
  • 有趣......现在我很困惑......`:`是伪类,不是吗?但是我们想要选择一种元素类型.为什么`:`? (3认同)

mne*_*syn 70

你需要

var i = $("#panel input"); 
Run Code Online (Sandbox Code Playgroud)

或者,取决于你想要什么(见下文)

var i = $("#panel :input"); 
Run Code Online (Sandbox Code Playgroud)

>会限制孩子,你希望所有的后裔.

编辑:正如尼克指出的那样,$("#panel input")和之间有一个微妙的区别$("#panel :input).

第一个将只检索类型的输入元件,也就是<input type="...">,但不是<textarea>,<button><select>元件.谢谢尼克,我自己也不知道,并相应地纠正了我的帖子.留下两个选项,因为我猜OP也没有意识到这一点并且 - 技术 - 要求输入...... :-)


小智 44

'find'方法可用于获取已缓存的容器的所有子输入以保存再次查找(而'children'方法仅获取直接子项).例如

var panel= $("#panel");
var inputs = panel.find("input");
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说很完美 - 我使用.each()循环元素,这意味着在循环中我使用$(this)访问当前元素.因此,我无法执行答案中建议的许多内容. - 相反,我能够做$(this).find("input"); 谢谢. (3认同)

Pau*_*lgo 28

如果您使用的是像Ruby on Rails的或Spring MVC的框架,你可能需要使用用方括号或其他字符,这是不允许的,你可以使用div的document.getElementById,如果你有相同类型的多个输入这个解决方案仍然有效.

var div = document.getElementById(divID);
$(div).find('input:text, input:password, input:file, select, textarea')
        .each(function() {
            $(this).val('');
        });
$(div).find('input:radio, input:checkbox').each(function() {
    $(this).removeAttr('checked');
    $(this).removeAttr('selected');
});
Run Code Online (Sandbox Code Playgroud)

此示例显示了如何清除输入,例如,您需要更改它.


Phi*_*off 9

var i = $("#panel input");
Run Code Online (Sandbox Code Playgroud)

应该管用 :-)

>只会获取直接子项,没有子项的子项
:是使用伪类,例如.:悬停等

你可以在这里阅读有关伪类的可用css选择器:http://docs.jquery.com/DOM/Traversing/Selectors#CSS_Selectors

  • @henchman - `:input`也是一个选择器,http://api.jquery.com/category/selectors/form-selectors/如果他有一个`<textarea>`或按钮`input`就找不到它, `:输入`会,所以有区别. (6认同)

Utt*_*Roy 8

这是我的方法:

您可以在其他情况下使用它.

var id;
$("#panel :input").each(function(e){	
  id = this.id;
  // show id 
  console.log("#"+id);
  // show input value 
  console.log(this.value);
  // disable input if you want
  //$("#"+id).prop('disabled', true);
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="panel">
  <table>
    <tr>
       <td><input id="Search_NazovProjektu" type="text" value="Naz Val" /></td>
    </tr>
    <tr>
       <td><input id="Search_Popis" type="text" value="Po Val" /></td>
    </tr>
  </table>
</div>
Run Code Online (Sandbox Code Playgroud)