创建后自动删除元素(Javascript / Jquery)[关闭]

Posted

技术标签:

【中文标题】创建后自动删除元素(Javascript / Jquery)[关闭]【英文标题】:Auto-Remove element after being created (Javascript/Jquery) [closed] 【发布时间】:2021-02-18 17:17:09 【问题描述】:

我一直在用 javascript 开发一些函数来在屏幕上显示消息。我的功能是这样的:

showMsg():创建一个元素并将其附加到另一个元素中。

我想要做的是,鉴于该功能是通过 click 激活的,将计时器附加到 this 非常元素并在 3 秒后将其删除。

我尝试了很多方法来完成它,使用 setTimeouts 并使用 bind.('DOMSubtreeModified') 之类的侦听器在容器中删除容器中的元素,其中 showMsg() 元素被附加到。

我需要给创建的元素一个 X 计时器,并在 X 计时器结束后删除该元素。就像一个粘性炸弹,附着在元素上

你们能帮帮我吗?

【问题讨论】:

【参考方案1】:

为什么需要将它设置为特定的对象?如果您希望项目在设定的时间后被销毁,您可以简单地通过保存对象对变量的引用然后在 setTimeout 中使用 .remove() 将其销毁。

setTimeout 的实例不会被销毁,因此它的行为就像在大多数用例中将其连接到对象一样。

例如:这是我所写的内容,适用于我认为您想要的内容。

function spawnTemp() 
  var deleteMe = $("<div style='height: 100px; width: 100px; background: lime;'>My Message</div>").appendTo("#eleContainer");
  setTimeout(function() 
    deleteMe.remove();
  , 1000);
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>

<body>

  <button id="spawnElement" onclick="spawnTemp();">Spawn Temporary</button>
  <div id="eleContainer">
  </div>

</body>

</html>

注意:在这段代码中,我使用appendTo() 方法来获取附加对象的实例,这允许我通过存储在变量deleteMe 中的引用删除该实例。

如果您使用的是append(),那么存储的变量将引用作为附加对象父级的容器。


如果您绝对需要将计时器附加到元素上,那么您可以使用更复杂的,

$("new html").appendTo('container').delay(2000).queue(function()  $(this).remove(); );

不过,很难想象为什么你会使用它而不是替代 setTimeout()

【讨论】:

【参考方案2】:

谢谢你们,特别是 Liam,他给了我我需要的正确方法。

它终于成功了,但方式有点不同。

调用函数 showMsg 并将其存储到变量中不允许我使计时器工作,它会创建元素,但不会删除它。

我最后做的是创建一个变量并粘贴函数showMsg()的“result”,然后计时器就可以工作了。结果是这样的:

当下的答案

var elem = $("<div>You must be logged first my friend</div>").appendTo('.notification-bar');
    setTimeout( function() 
        $(elem).remove();
    , 3000);

现在一切正常。

我遇到的问题,已解释

这是我应该做的:

我得到的功能:

createElement:使用给定的属性、数据和位置创建元素

function createElement(element, attributes, position, text) 
var object = $(document.createElement(element)); // Element creation
$.each(attributes, function(key, value)  // Array of attributes
    object.attr(key, value); // Attr: Value
);
$(object).appendTo(position); // Place
$(object).append(text); // Text

showMsg():使用createElement来创建和放置一个div

function showMsg() 
createElement('div', null, '.notification-bar', "You must be logged first my friend");

onclick 触发器:在身体负荷时调用。 * 这应该可以工作 *

$('.reply-button').click(function(event) 
    var elem = notifyUser('You must be logged first my friend');
    setTimeout( function() 
        $(elem).remove();
    , 3000);

);

如果有人知道如何执行之前的问题,请现在告诉我

提前谢谢你;)

【讨论】:

以上是关于创建后自动删除元素(Javascript / Jquery)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

JQ 重载页面元素

jq删除元素

JQ 数组删除(splice和delete)

jq优化

jq如何判断含有某个类名的元素是第几个?

js数组操作(添加、删除、替换元素)