查找动态添加的elem.firstChild
Find dynamically added elem.firstChild
我有一些代码用于动态添加带有内容的选项卡。删除选项卡时,eventListener会启动一个回调函数,该函数以选项卡+内容的数组作为参数。
[newTab]-动态创建的选项卡阵列
[newContent]-动态创建的div数组(选项卡内容)这是它的代码:
tabSpan.addEventListener("click", removeTab([newTab, newContent]));
问题是,当我删除一个类为活动的选项卡时,如果它存在,我需要将该类传递给数组中的第一个选项卡,如果不存在,则什么也不做。我试图解决的问题是,我的removeTab函数没有得到newTab数组的第一个子级。
//Remove tab
function removeTab(nodeArr) {
return function() {
nodeArr.forEach(function(el) {
el.parentNode && el.parentNode.removeChild(el);
});
console.log(tabs.closest("li.item"));
};
}
控制台日志显示空
在我的情况下,如何检索firstChild以将类活动传递给它?
HTML(不要注意defaultTab,在这种情况下它不算作firstChild):
<div class="wrap">
<ul id="tabs">
<li id="defaultTab" class="tab default">
<span>+</span>
</li>
</ul><!--Tabs ul End-->
<div id="defaultDiv" class="content default">
</div>
JS Bin DEMO
它显示为null,因为最接近的是它的父级,而不是子级。
closest()方法是什么
根据MDN
方法返回匹配的当前元素(或当前元素本身)参数中给定的选择器。
什么是祖先
根据W3school
祖先是父母、祖父母、曾祖父母等等
所以我们应该寻找子元素。我们可以在这里使用querySelector()。
什么是querySelector
根据MDN
返回文档中的第一个元素
此外,我们必须避免javascript在DOM之前加载,并且可以在此处使用setTimeout。所以最后的代码是
setTimeout(function waitDom() {
tabs.querySelector("*").classList.add("active");
defaultDiv.querySelector("*").classList.add("active");
}, 0);
};
这是正在工作的小提琴手
相关文章:
- Javascript:firstChild对象返回undefined
- 添加:在悬停其他elem时,将悬停状态添加到不同elem
- JS get元素之间的差异's属性与elem.getAttribute(attr)和elem[attr]
- 查找动态添加的elem.firstChild
- 这条线是什么意思"this.parentNode.firstChild.nodeName”;在jQuery H
- Firstchild/lastchild无法在JavaScript中工作
- javascript firstChild, nextSibling read-only
- elem is undefined?
- jQuery 对类的一个 elem 的值进行动画处理
- Javascript 的调试策略“TypeError: elem.dispatchEvent is not a func
- elem 未通过 HTML 5 拖放定义
- 多个 OR 运算符与 elem.value.match
- Row.cells[0].firstChild 在 IE 和 FF 中返回不同的值
- 获取节点名称/elem 在数据表 1.10.4 上为空
- 使用React时的类型错误:无法读取未定义的属性“firstChild”
- 未捕获的类型错误: $(..)[0].firstChild.wrap 不是一个函数
- Ember.js新模型elem到视图中的第一个位置
- 如何“;(M[key]||(M[key]=[])).push(elem)"工作
- Javascript this.firstChild.nextSibling在Internet Explorer中不工作
- firstChild何时以及如何选择#文本节点