我想获得myLI
id的顶级父元素(部分)。
我的HTML代码是:
<section>
<div>
<ul>
<li id="myLI">Coffee</li>
<li>Tea</li>
</ul>
</div>
</section>
我的代码是:
var x = document.getElementById("myLI").parentElement.nodeName;
我的代码返回UL
,但我希望它返回section
。
答案 0 :(得分:2)
如果您想通过tagName定位父级,可以使用 .closest(selector);
,如:
var x = document.getElementById("myLI").closest('section');
注意:请查看浏览器兼容性部分。
希望这有帮助。
var x = document.getElementById("myLI").closest('section');
console.log(x.tagName);
<section>
<div>
<ul>
<li id="myLI">Coffee</li>
<li>Tea</li>
</ul>
</div>
</section>
答案 1 :(得分:1)
var topParent = document.getElementById("myLI");
while( topParent.parentElement.nodeName != 'BODY' ){
topParent = topParent.parentElement;
}
console.log( topParent.nodeName );
<section>
<div>
<ul>
<li id="myLI">Coffee</li>
<li>Tea</li>
</ul>
</div>
</section>
所以我假设你想要'BODY'元素之前的元素?
答案 2 :(得分:1)
“当用户点击单选按钮或某种类型的点击时,我可能会执行它。”
然后只需在section元素上设置click事件:
var sections = Array.prototype.slice.call(document.querySelectorAll("section"));
sections.forEach(function(section){
section.addEventListener("click", function(){
console.log(this.id);
});
});
<section id="one">
<div>
<ul>
<li id="myLI">Coffee</li>
<li>Tea</li>
</ul>
</div>
</section>
<section id="two">
<div>
<ul>
<li id="myLI">Coffee</li>
<li>Tea</li>
</ul>
</div>
</section>
<section id="three">
<div>
<ul>
<li id="myLI">Coffee</li>
<li>Tea</li>
</ul>
</div>
</section>