我正在尝试使用div的所有直接子元素填充数组。 例如:
<div>
<span></span>
<a></a>
</div>
应该会生成包含span
和a
我将如何实现这一目标?
我试过var elements = $('.thediv').children();
,但这似乎不起作用。
另外,我将如何将这些信息用于此类功能?:
$(“element1”,“element2”,“element3”)取决于数组的结果?
真的非常感谢你的帮助!我有点迷失这件事
注意:我正在使用zepto.js,它具有与jquery类似的语法,但是错过了很多函数,因此这可能是一个问题,但我也对使用jquery语法的解决方案感到满意,因为它应该可以正常工作:) { {3}}
答案 0 :(得分:2)
要将标记放入数组中,您可以轻松使用jQuery(虽然我不熟悉zepto):
var elementsArray = [];
$('div').children().each(
function(i){
elementsArray.push(this.tagName.toLowerCase());
});
要使用它们,您可以尝试:
for(i=0;i<elementsArray.length;i++){
$('div').find(elementsArray[i]).css('color','red');
}
虽然这只是使用每个元素的tagName
,但如果相关元素所有元素中的多个a
与选择器匹配,则有效{{1在这种情况下,将由选择器作为目标。
上述注意事项似乎通过使用更复杂的选择器和行为来打折,并且允许每个元素一次迭代一个,尽管我不禁觉得它比它更复杂一点。需要:
$('div').find('a')
叹息,我是个白痴。下面的最后一次迭代,在某种程度上降低了复杂性,并允许根据它们在数组中的位置对每个元素进行适当的迭代:
var elementsArray = [];
$('div').children().each(
function(i){
elementsArray.push(this.tagName.toLowerCase());
});
for(i=0;i<elementsArray.length;i++){
$('div')
.find(elementsArray[i])
.not('.edited')
.eq(0).css('color','red')
.addClass('edited');
}
尽管如此,如果你想“定位所有元素”,为什么不简单地将这些元素作为目标:
var elementsArray = [];
$('div').children().each(
function(i){
elementsArray.push(this.tagName.toLowerCase());
});
for(i=0;i<elementsArray.length;i++){
$('div')
.children()
.eq(i)
.css('color','red');
}
选择和定位$('div').children();
元素的每个直接子元素,而不先将它们保存在用户创建的数组变量中,或者必须将它们保存在用户创建的数组变量中。
答案 1 :(得分:0)
$( “DIV”)的儿童()指定者();
http://api.jquery.com/toArray/
$( “元素1”, “element2的”, “元素3”)
这是否意味着您要将数组用作jQuery选择器?或者你真的想要标签名称?
答案 2 :(得分:0)
每个DOM节点都有一个childNodes
属性,它是一个NodeList,包含所讨论节点的所有直接后代。