gpt4 book ai didi

jquery - 在 .remove() 方法之后如何访问该元素?

转载 作者:行者123 更新时间:2023-12-01 02:27:43 24 4
gpt4 key购买 nike

当我们在任何元素上使用 $("selector").remove() 时,它会立即remove ,而 $("selector").remove() 是一个同步方法,因此当元素被删除时将执行 next 语句。但就我而言,删除元素后仍然可以访问该元素。

$("#click1").on("click", function() {
$(this).remove();
alert($(this).text());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="click1">
click on me
</button>

我的问题是,如果该元素被删除(从 dom 中删除),我如何仍然可以通过 $(this).text() 访问它? 有什么想法吗?

更新:

在任何其他情况下,都不会发生这种情况

$("#click1").on("click", function() {
$(this).remove();
alert($(this).text());
});
$("#click2").on("click", function() {
$("#click1").remove();
alert($("#click1").text());

})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="click1">
click on me
</button>
<button id="click2">
click on me too
</button>

现在第二个按钮,立即删除该元素,我不再访问该元素,(即使在很短的时间后也不会)

最佳答案

jQuery 在内部使用 removeChild,并且 documentation

The removed child node still exists in memory, but is no longer part of the DOM.

...you may reuse the removed node later in your code,

...assuming your code has not kept any other reference to the node elsewhere, it will immediately become unusable and irretrievable, and will usually be automatically deleted from memory after a short time.

在您的事件处理程序中,this 仍然引用该节点,因此它不会从内存中删除,并且只要您有对该节点的引用就可以使用

当你再次执行$("#click1")时,jQuery使用.getElementById从DOM中获取元素,但它不再在DOM中,它已被删除。

关于jquery - 在 .remove() 方法之后如何访问该元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40057841/

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