【问题标题】:Is it OK to delete the div id of an element with an event on that div id?删除具有该 div id 上的事件的元素的 div id 是否可以?
【发布时间】:2019-11-05 19:24:09
【问题描述】:

也就是说,使用 jQuery,我想通过该 div 上的事件侦听器来删除该 div。它似乎有效,但它让我有一种从我身下拉出地毯的下沉感觉。这是小提琴和下面的代码。

关于这是一个重复问题的建议不适用。我问的不仅仅是删除侦听器,而是查询一个元素,然后在该查询的条件下删除该元素。

https://jsfiddle.net/pkellner99/wtkv7f31/

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <title>Title</title>
  <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
</head>

<body>
  <script type="application/javascript">
    $("body").prepend(
      `<div id="someguidid">
           <img src="https://apod.nasa.gov/apod/image/1904/FairbairnCROSSTOCARINA.jpg"/>
         </div>
        `
    );
    $("#someguidid").click(function() {
      $("#someguidid").remove("#someguidid");
    });
  </script>
</body>

</html>

【问题讨论】:

标签: javascript jquery


【解决方案1】:

是的,这很好。删除后,该元素将不再存在于文档中,这意味着事件侦听器将被垃圾收集 - 这没有错。

由于您要删除 #someguidid 的 jQuery 集合,因此无需将额外的选择器传递给 .remove - 只需在集合上调用 .remove()

$("body").prepend(
  `<div id="someguidid">
     <img src="https://apod.nasa.gov/apod/image/1904/FairbairnCROSSTOCARINA.jpg"/>
   </div>`
);
const $elm = $("#someguidid")
$elm.click(function() {
  $elm.remove();
});
&lt;script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"&gt;&lt;/script&gt;

【讨论】:

  • 上面的评论引用了一篇说“这不是一个好主意”的帖子。 stackoverflow.com/questions/12528049/…我更喜欢你的回答,但这是我正在写的一篇文章,不想被同行嘲笑。
  • 您链接的答案是在 2012 年编写的,即使在那时,它也警告说,即使是旧版本的 IE,也不再使用了。如今,许多人甚至考虑放弃对 IE11(IE 的最新版本,2013 年)的支持。我不认为担心以前的 IE 版本是对时间的有效利用 - 许多 现在使用的东西不适用于过时的浏览器。对于 2019 年,我认为有人使用 IE8 的情况是 他们的 系统的错误,而不是你的系统:P
猜你喜欢
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
  • 2015-03-24
  • 2012-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
相关资源
最近更新 更多