如何获得一个div元素(jQuery的)

如何获得一个div元素(jQuery的)

问题描述:

HTML的所有子输入:如何获得一个div元素(jQuery的)

<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> 

我需要在特定的div来选择所有输入。

这不工作:

var i = $("#panel > :input"); 

使用它,而不大于:

$("#panel :input"); 

>意味着只有直接儿童的元素,如果你希望所有的孩子,无论深度只是使用一个空间。

+3

有趣......现在我很困惑...的':'是伪类,是不是?但是我们想要选择一个元素类型。为什么':'? – mnemosyn 2010-03-08 16:15:04

+11

@mnemosyn - 这是另一种类型的选择器,像':checkbox'是,详细信息见这里:http://api.jquery.com/input-selector/这里有一个更完整的列表:http:// api .jquery.com/category/selectors/form-selectors/ – 2010-03-08 16:18:16

+0

感谢Nick,并没有意识到这一点。修正了我的答案。 – mnemosyn 2010-03-08 16:27:37

你需要

var i = $("#panel input"); 

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

var i = $("#panel :input"); 

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

编辑:正如尼克指出的那样,$("#panel input")$("#panel :input)之间存在细微的差异。

第一个将只检索类型的输入元件,即<input type="...">,但不是<textarea><button><select>元件。感谢尼克,我自己不知道这一点,并相应地纠正了我的帖子。离开这两个选项,因为我猜OP是不知道的,要么和-technically-要求输入... :-)

+0

所以,输入将选择所有输入/选择/文本区域?一次全部? – Yuri 2015-09-17 10:19:53

+0

基本上,是的。选择器返回一个匹配数组,所以我想你可以说它是'一次',虽然我不完全确定你的意思是... – mnemosyn 2015-09-17 10:25:48

+1

我的意思是,“所有在一起”只是选择器。 “:输入选择器描述:选择所有输入,文本区域,选择和按钮元素。” 不知道,我现在就用它:) – Yuri 2015-09-18 17:36:33

var i = $("#panel input"); 

应该工作:-)

的>将只取直接的孩子,没有孩子的孩子
:是用于伪类,例如。 :悬停等

你可以看到伪类这里提供的css-选择:http://docs.jquery.com/DOM/Traversing/Selectors#CSS_Selectors

+6

@henchman - ':input'也是一个选择器,http://api.jquery.com/category/selectors/form-selectors/ If他有一个'

+0

+1,所以忽略>会做伎俩。现在我也发现它在我推荐的页面上。 – 2010-03-08 16:21:38

“查找”方法可以用来获得已经被缓存到容器的所有子输入保存再次查找(而“儿童”方法只会得到直接的孩子)。例如

var panel= $("#panel"); 
var inputs = panel.find("input"); 
+2

这对我来说非常完美 - 我使用.each()循环元素,这意味着在循环内我使用$(this)访问当前元素。因此,我无法执行很多答案中的其他建议。 - 而是我可以做$(this).find(“input”);谢谢。 – djbp 2013-05-23 11:08:58

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

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'); 
}); 

这个例子说明如何清除输入,你比如你需要去改变它。

这是我的方法:

您可以在其他事件中使用它。

var id; 
 
$("#panel :input").each(function(e){ \t 
 
    id = this.id; 
 
    // show id 
 
    console.log("#"+id); 
 
    // show input value 
 
    console.log(this.value); 
 
    // disable input if you want 
 
    //$("#"+id).prop('disabled', true); 
 
});
<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>