gpt4 book ai didi

javascript - 单击按钮时如何删除包含按钮的div?

转载 作者:行者123 更新时间:2023-11-29 16:06:33 25 4
gpt4 key购买 nike

我试图在单击其中的按钮时删除一个 div。

HTML

<html>
<head>
<script src="test.js"></script>
</head>
<body>
<div class="image">
<img src="http://i.imgur.com/VuKnN5P.jpg" alt="First">
<button class="remove">X</button>
</div>
<div class="image">
<img src="http://i.imgur.com/ee4QOKe.jpg" alt="Second">
<button class="remove">X</button>
</div>
</body>
</html>

Javascript

function registerClickHandler() {
// Register click event handler for button of class 'remove'
"use strict";
var node = document.getElementsByClassName("image");
if (node.parentNode) {
node.parentNode.removeChild(node);
}
}

var listen = document.getElementbyClassName("remove");
listen.addEventListener("click", registerClickHandler());

因此,当我单击 div 内的“X”按钮时,我需要它来删除整个父 div,但似乎我尝试过的任何方法都不起作用。我不确定我是否没有以正确的方式使用事件处理程序,或者我正在做的事情是否完全错误。如果可能的话,我想在不使用 jQuery 的情况下执行此操作(因为我不太了解它),但是我看到的很多针对模糊相似问题的解决方案都使用了 jQuery。

编辑:我忘记说明我正在寻找一种使用 eventHandlers 来完成此操作的方法。

最佳答案

尝试 Element.closest()您可以通过 pref 更改元素选择器

Element.closest() 方法返回与参数中给定的选择器匹配的当前元素(或当前元素本身)的最近祖先。如果没有这样的一个祖先,它返回 null。”

mind that with a "proper selector" you don't have to worry about the parent or grandparent on elements selection

这是一个例子。

function setup() {
var els = document.getElementsByClassName("remove");
for (var i = 0; i < els.length; i++) {
els[i].addEventListener('click', function (e) {
e.preventDefault();
e.target.closest('div.image').remove();
});
}
}
setup();

img {
width:100px; height:100px;
}
<div class="image">
<img src="http://i.imgur.com/VuKnN5P.jpg" alt="First">
<button class="remove">X</button>
</div>
<div class="image">
<img src="http://i.imgur.com/ee4QOKe.jpg" alt="Second">
<button class="remove">X</button>
</div>

<div class="image">
<div>
<img src="http://i.imgur.com/ee4QOKe.jpg" alt="Second">
<button class="remove">X</button>
</div>
</div>

<div class="image">
<div>
<img src="http://i.imgur.com/ee4QOKe.jpg" alt="Second">
<button class="remove">X</button>
</div>
</div>
<script>
function setup() {
var els = document.getElementsByClassName("remove");
for (var i = 0; i < els.length; i++) {
els[i].addEventListener('click', function (e) {
e.preventDefault();
e.target.closest('div.image').remove();
//e.target.closest('.image').remove();

//this will not work on 2 last images cause parent div will be deleted
//leaving an empty <div class="image"></div> for each removed item

//e.target.closest('div').remove();
});
}
}
setup();
</script>

关于javascript - 单击按钮时如何删除包含按钮的div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40144638/

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