Javascript 设置超时以引导警报

Thu*_*orn 2 javascript django jquery

我的警报是动态创建的。

\n\n

是否可以为警报分配一个功能,使其在 3 秒内自毁?

\n\n
{% if messages %}\n    {% for message in messages %}\n        <div class="alert alert-{{ message.tags }}">  \n            <a class="close" data-dismiss="alert">\xc3\x97</a>\n            {{ message }}\n        </div>\n    {% endfor %}\n{% endif %}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我用作Django后端。

\n\n

最终产品看起来像这样

\n\n
<div class="alert alert-success">\n    <a class="close" data-dismiss="alert">\xc3\x97</a>\n    My message\n</div>\n
Run Code Online (Sandbox Code Playgroud)\n\n

概括

\n\n

是否可以实现像这样的超时功能

\n\n
setTimeout(function(this){ $(this).remove() }, 3000);\n
Run Code Online (Sandbox Code Playgroud)\n\n

进入标签?

\n

Tra*_*s J 5

一种简单但不是最优雅的方法是简单地包含一个小图像元素以及渲染后运行的脚本。假源属性会导致 onerror JavaScript 立即执行。该样式使图像元素不会中断或改变页面呈现的方式。

\n\n

这种方法更容易,因为它不需要您使用某种数据或迭代器或自定义标识符来确定需要定位哪个元素。阅读起来有点困难,但确实有效。超时设置为 500,这样您就不必等待 3 秒来测试它。

\n\n

\r\n
\r\n
<div class="alert alert-success">\r\n    <a class="close" data-dismiss="alert">\xc3\x97</a>\r\n    My message\r\n    <img src="close.soon" style="display:none;" onerror="(function(el){ setTimeout(function(){ el.parentNode.parentNode.removeChild(el.parentNode); },500 ); })(this);" />\r\n</div>
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n\n

或者,由于您已经包含了 jQuery,您也可以使用以下代码片段:

\n\n

\r\n
\r\n
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>\r\n<div class="alert alert-success">\r\n    <a class="close" data-dismiss="alert">\xc3\x97</a>\r\n    My message\r\n    <img src="close.soon" style="display:none;" onerror="(function(el){ setTimeout(function(){ $(el).parent().remove(); },500 ); })(this);" />\r\n</div>
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n