如何在分配多个属性时不重复自己
How to not repeat myself when assigning several properties
我有一个事件侦听器,其回调函数 event
的参数已分配给一个元素。有什么方法可以 select 该元素的第 5 个父元素而无需写下此代码?
event.target.parentNode.parentNode.parentNode.parentNode.parentNode;
没有第 n 个父方法,因此您必须执行一堆 parentNode 或使用 closest(selector),它将遍历 DOM 树,直到找到匹配项。所以你发现它的一些独特之处并使用它
document.querySelector('input').addEventListener("input", function(evt) {
const row = evt.target.closest('.row');
console.log(row);
});
<div class="row">
<div>
<div>
<div>
<input />
</div>
</div>
</div>
</div>
如果你知道你需要遍历的父元素链的确切数量,那么你可以实现简单的助手
const takeParent = (target, count) => {
while (--count >= 0) {
if (target === document) {
break;
}
target = target.parentNode;
}
return target;
};
takeParent(myElement, 5); // give 5th parent of myElement or "document" if there are less than 5 parents
当然,有几种方法可以实现这一点。
我。 JQuery 方法:
$('#element1').parents().eq(5);
二.原始 Javascript
Function returnNthParent(n, element)
{
parent = element;
for (i = 0; i < n; i++)
{
parent = parent.parentNode;
}
return parent;
}
我有一个事件侦听器,其回调函数 event
的参数已分配给一个元素。有什么方法可以 select 该元素的第 5 个父元素而无需写下此代码?
event.target.parentNode.parentNode.parentNode.parentNode.parentNode;
没有第 n 个父方法,因此您必须执行一堆 parentNode 或使用 closest(selector),它将遍历 DOM 树,直到找到匹配项。所以你发现它的一些独特之处并使用它
document.querySelector('input').addEventListener("input", function(evt) {
const row = evt.target.closest('.row');
console.log(row);
});
<div class="row">
<div>
<div>
<div>
<input />
</div>
</div>
</div>
</div>
如果你知道你需要遍历的父元素链的确切数量,那么你可以实现简单的助手
const takeParent = (target, count) => {
while (--count >= 0) {
if (target === document) {
break;
}
target = target.parentNode;
}
return target;
};
takeParent(myElement, 5); // give 5th parent of myElement or "document" if there are less than 5 parents
当然,有几种方法可以实现这一点。
我。 JQuery 方法:
$('#element1').parents().eq(5);
二.原始 Javascript
Function returnNthParent(n, element)
{
parent = element;
for (i = 0; i < n; i++)
{
parent = parent.parentNode;
}
return parent;
}