gpt4 book ai didi

javascript - 我可以在 Javascript 中选择 HTML 元素最近的祖先(沿着 DOM 向上走)吗?

转载 作者:行者123 更新时间:2023-12-03 01:03:13 25 4
gpt4 key购买 nike

在下面的代码片段中,我想在单击按钮时捕获最外层的元素(li .menu-item)。

通常,我可以使用 document.querySelector(.menu-item),但在这种情况下,这些列表项是动态添加的,因此多个 li 元素与菜单项类。

如何获取最接近的 li 祖先以提取其子代的值

<li class="menu-item">
<div class="item">
<p>Chicken Veg Roll</p>
<img src="../../assets/img/menu/tasty-rolls.jpg">
</div>
<p class="price">1350.00</p>
<button class="order-btn" form="menu-item-form" type="submit">Add to Order</button>
</li>

最佳答案

我对你的情况做了一些假设,但你可以使用 closest

来自MDN

The Element.closest() method returns the closest ancestor of the current element (or the current element itself) which matches the selectors given in parameter. If there isn't such an ancestor, it returns null.

看看这个例子

const buttons = document.querySelectorAll('.order-btn');

buttons.forEach(button => button.addEventListener('click', handleClick));

function handleClick(e) {
e.preventDefault();

const li = this.closest('li');

li.style.background = 'red';
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<ul>
<li class="menu-item">
<div class="item">
<p>Chicken Veg Roll</p>
<img src="../../assets/img/menu/tasty-rolls.jpg">
</div>
<p class="price">1350.00</p>
<button class="order-btn" form="menu-item-form" type="submit">Add to Order</button>
</li>
<li class="menu-item">
<div class="item">
<p>Chicken Veg Roll</p>
<img src="../../assets/img/menu/tasty-rolls.jpg">
</div>
<p class="price">1350.00</p>
<button class="order-btn" form="menu-item-form" type="submit">Add to Order</button>
</li>
<li class="menu-item">
<div class="item">
<p>Chicken Veg Roll</p>
<img src="../../assets/img/menu/tasty-rolls.jpg">
</div>
<p class="price">1350.00</p>
<button class="order-btn" form="menu-item-form" type="submit">Add to Order</button>
</li>
<li class="menu-item">
<div class="item">
<p>Chicken Veg Roll</p>
<img src="../../assets/img/menu/tasty-rolls.jpg">
</div>
<p class="price">1350.00</p>
<button class="order-btn" form="menu-item-form" type="submit">Add to Order</button>
</li>
<li class="menu-item">
<div class="item">
<p>Chicken Veg Roll</p>
<img src="../../assets/img/menu/tasty-rolls.jpg">
</div>
<p class="price">1350.00</p>
<button class="order-btn" form="menu-item-form" type="submit">Add to Order</button>
</li>
</ul>
</body>
</html>

如果 li 元素是动态添加的,您可能应该实现 Event delegation

关于javascript - 我可以在 Javascript 中选择 HTML 元素最近的祖先(沿着 DOM 向上走)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52529400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com