在DOM中点击任意位置获取图片源

问题描述 投票:0回答:1

当我点击图片时,我能够得到图片源...

document
    .querySelectorAll('.module img')
    .forEach(el => el.addEventListener("click", e => {
        console.log(e.target.currentSrc)
    });
<div class="module">
    <img src="pics/pic1.jpg">
    <h2>Title</h2>
    <p>Lorem impsum dolor sit amet</p>
</div>

<div class="module">
    <img src="pics/pic2.jpg">
    <h2>Title</h2>
    <p>Lorem impsum dolor sit amet</p>
</div>

<div class="module">
    <img src="pics/pic3.jpg">
    <h2>Title</h2>
    <p>Lorem impsum dolor sit amet</p>
</div>

...但我如何才能在不为每个子元素做事件监听的情况下,无论我在父div中的哪里点击,都能得到图片源?

javascript html dom
1个回答
1
投票

无论你的解决方案是什么,听起来你需要从以下两个方面获取信息。thisevent 传入事件监听器。

document
    .querySelectorAll('.module')
    .forEach(el => {
        el.addEventListener("click", e => {
            console.log(e.currentTarget.querySelector('img').currentSrc);
        });
    });
<div class="module">
    <img src="pics/pic.jpg">
    <h2>Title</h2>
    <p class="usp">Lorem ipsum</p>
    <p>Lorem impsum dolor sit amet</p>
</div>

<div class="module">
    <img src="pics/pic2.jpg">
    <h2>Title</h2>
    <p class="usp">Lorem ipsum</p>
    <p>Lorem impsum dolor sit amet</p>
</div>

<div class="module">
    <img src="pics/pic3.jpg">
    <h2>Title</h2>
    <p class="usp">Lorem ipsum</p>
    <p>Lorem impsum dolor sit amet</p>
</div>

2
投票

你可以这样做,添加一个 listener 遍及 div 与类选择器。

document.querySelectorAll(".module").forEach(ele => {
  ele.addEventListener("click", function() {
    console.log(this.children[0].getAttribute('src'))
  })
})
<div class="module">
  <img src="pics/pic.jpg">
  <h2>Title</h2>
  <p class="usp">Lorem ipsum</p>
  <p>Lorem impsum dolor sit amet</p>
</div>

0
投票

为父类添加一个事件监听器,并进行 使用event.stopPropagation()

var el = document.querySelector(".module");
el.addEventListener("click", function(ev){
  // Parent div clicked, get the image element ref
  var img = document.querySelector(".module img");
  alert(img.currentSrc)
  // Image src alerted
})
© www.soinside.com 2019 - 2024. All rights reserved.