代码之家  ›  专栏  ›  技术社区  ›  ThunderHorn

javascript将超时设置为引导警报

  •  1
  • ThunderHorn  · 技术社区  · 6 年前

    我的警报是动态创建的。

    是否可以在3秒内为警报分配一个函数以进行自我销毁?

    {% if messages %}
        {% for message in messages %}
            <div class="alert alert-{{ message.tags }}">  
                <a class="close" data-dismiss="alert">×</a>
                {{ message }}
            </div>
        {% endfor %}
    {% endif %}
    

    我正在使用 Django 作为后端。

    最终产品看起来像这样

    <div class="alert alert-success">
        <a class="close" data-dismiss="alert">×</a>
        My message
    </div>
    

    总结

    是否可以使超时功能

    setTimeout(function(this){ $(this).remove() }, 3000);
    

    进入标签?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Travis J    6 年前

    一种简单的方法,尽管不是最优雅的方法,只是包含一个小的图像元素和一个脚本,该脚本在渲染后运行。伪源属性导致OnerRorJavaScript立即执行。样式使图像元素不会中断或更改页面呈现的方式。

    这种方法更简单,因为它不要求您使用某种数据、迭代器或自定义标识符来确定需要针对哪个元素。这本书有点难读,但确实有用。超时设置为500,这样您就不必等待3秒钟来测试它了。

    <div class="alert alert-success">
        <a class="close" data-dismiss="alert">×</a>
        My message
        <img src="close.soon" style="display:none;" onerror="(function(el){ setTimeout(function(){ el.parentNode.parentNode.removeChild(el.parentNode); },500 ); })(this);" />
    </div>

    或者,由于您已经包含了jquery,因此也可以使用此代码段:

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="alert alert-success">
        <a class="close" data-dismiss="alert">×</a>
        My message
        <img src="close.soon" style="display:none;" onerror="(function(el){ setTimeout(function(){ $(el).parent().remove(); },500 ); })(this);" />
    </div>
        2
  •  0
  •   Bharath    6 年前

    将关键字“modal”添加到alert div的类列表中会将其从DOM中删除。

    下面是一个方法。 提供一个ID选择器,然后将“modal”添加到类列表中

    `<div id='myAlert' class="alert alert-success">
    <a class="close" data-dismiss="alert">×</a>
    My message
    </div>`
    
    
    setTimeout(()=>{
    var alertId = document.getElementById('myAlert')
    alertId.classList.add('modal')
    },3000);