问题描述
|
如果我有这样的div:
<div id=\"box\">
<div class=\"but\" id=\"1\">Text 1</div>
<div class=\"but\" id=\"2\">Text 2</div>
</div>
如何创建#box
div中包含的.but
元素的所有ID的数组?
在示例中为[1,2]
。
解决方法
var ids = $(\'#box > .but\').map(function() {
return this.id || null;
}).get();
这将为#box
元素的每个.but
子元素创建一个条目,前提是它具有ID(null
值将被丢弃,如果元素没有ID,则this.id
将返回一个空字符串(其值为false
))。如果每个元素都绝对具有ID,或者您不希望/不希望数组中的值为空,则可以省略“ 10”部分。
如果要获取每个.but
后代的ID,请将选择器更改为:
$(\'#box .but\')
参考:.map()
,.get()
,您可以使用.each遍历结果集中的所有元素:
var ar=[]
$(\'div.but\').each(function(){
ar.push(this.id);
});
这是一个工作的小提琴。
,这应该工作:
var idArray = new Array();
$(\'#box .but\').each(function() {
idArray.push(this.id);
});
JSFiddle示例
,尝试类似
var idArray = new Array();
$(\".but\").each(function(index,item) { idArray.push(item.id); });
,这个怎么样:
var ar = jQuery(\'div#box\').children(\'.but\').map( function() {
return jQuery(this).attr(\'id\');
}).get();
alert(ar);
@flexi kling感谢漂亮的功能map
和get
的信息
演示