如何解决如何使双击时仅添加到 DOM 的 1 个 img 消失?
所以我构建了一个你们中的一些人可能熟悉的小型 DogAPI。我想让我的有点像拼贴画,但我想让人们可以选择双击图片并根据需要将其删除。到目前为止,我已经使用 JQuery 创建了图像并将它们附加到容器中。添加事件侦听器会使所有图像消失,因为它们都具有相同的 ID。实现这一点超出了我的技能水平(初学者)。
https://codepen.io/drxl/pen/VwbQZyK
<div class="container">
<div class="header">
<h1>Dog Collage!</h1>
<p>Select a dog and create your collage!</p>
<div id="breeds"></div>
</div>
<div class="slideshow" id="imgs">
</div>
// fetches dog breed list/shows error if applicable
async function start() {
try {
const response = await fetch("https://dog.ceo/api/breeds/list/all")
const data = await response.json()
breedList(data.message)
} catch (e) {
console.log("There was a problem fetching the breed list.")
alert("There was a problem fetching the breed list.")
}
}
//load breed list in dropdown menu
start()
function breedList(dogList) {
document.getElementById("breeds").innerHTML = `
<select onchange="loadByBreed(this.value)">
<option>Choose a dog breed</option>
${Object.keys(dogList).map(function (breed) {
return `<option>${breed}</option>`
}).join('')}
</select>
`
}
//load images
async function loadByBreed(breed) {
if (breed != "Choose a dog breed") {
const response = await fetch(`https://dog.ceo/api/breed/${breed}/images`)
const data = await response.json()
createImgs(data.message)
}
}
//show randomized images
function createImgs(images) {
let imageContainer = $(".slideshow");
let dogImgs = $('<img>');
dogImgs.attr("src",images[Math.floor(Math.random() * images.length)]);
dogImgs.addClass(".dogPic")
imageContainer.append(dogImgs);
}
解决方法
// with jQuery you could just add a click listener to the class and remove the element,just add this below all your code
$(document).on('click',".dogPic",function(){
$(this).remove();
})
你需要先修正你的错字:
dogImgs.addClass(".dogPic")
变成
dogImgs.addClass("dogPic")
,
如果您需要在双击时删除图像,您可以使用 jQuery 双击事件。
$(document).on('dblclick',function(){
$(this).remove();
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。