jQuery我无法访问e.currentTarget中的getAttribute属性

jQuery I can't access to getAttribute attribute in e.currentTarget

提问人:Renato Ramos Puma 提问时间:6/16/2023 最后编辑:BarmarRenato Ramos Puma 更新时间:6/16/2023 访问量:28

问:

我正在使用带有 setTimeout 的箭头函数,并且在访问单击的元素时遇到问题。getAttribute

此问题的原因可能是什么?

let myTimeout;
const time = 2000;

$(document).on("touchstart", "figure img", (e) => {
  myTimeout = setTimeout(function(e) {
    var figure = e.currentTarget;
    var img = figure.querySelector("img");
    var src = img.getAttribute("src");
    console.log("src>" + src);
    console.log("PRESS DELAY");
  }, time);
});
<section>
  <figure>
    <img src="https://picsum.photos/536/354" />
  </figure>
</section>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

JavaScript jQuery 事件 目标

评论

4赞 Kevin B 6/16/2023
可能是您在 setTimeout 中指定的参数,该参数隐藏了您想要的参数。

答:

3赞 dave 6/16/2023 #1

问题在于

  1. 您的事件侦听器设置为已经(因为您这样做了,所以当您这样做时,它会尝试查找 img 的子 img,这没有意义。eimg"figure img"figure = e.currentTarget; img = figure.querySelector('img')

  2. 中的函数隐藏变量,因此在该函数内部未定义。setTimeoutee

它应如下所示:

let myTimeout;
const time = 2000;

$(document).on("touchstart", "figure img", (e) => {
  myTimeout = setTimeout(function() {
    var img = e.target;
    var src = img.getAttribute("src");
    console.log("src>" + src);
    console.log("PRESS DELAY");
  }, time);
});
<section>
  <figure>
    <img src="https://picsum.photos/536/354" />
  </figure>
</section>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

评论

0赞 Renato Ramos Puma 6/16/2023
你说得很对,我很傻。非常抱歉。在你的帮助下,我学到了很多东西。