javascript - 对并不总是发生的事件执行 jQuery 脚本是否不好?

标签 javascript jquery

我的页面可能有也可能没有以下警报:

<div class="alert">Some alert</div>

5 秒后我将它们隐藏起来:

<script type="text/javascript">
$(document).ready(function () {

window.setTimeout(function() {
    $(".alert").fadeTo(1500, 0).slideUp(1500, function(){
        $(this).remove(); 
    });
}, 5000);

});
</script>

所以我想知道,我是否应该将警报隐藏功能放入我的常规函数​​中,这些函数总是在页面加载时执行,即使没有要隐藏的警报?或者将其放在实际警报 div 代码正下方的 HTML 代码中,以便仅在警报显示时发生?

第一个选项的好处是我的代码更有组织性。缺点是即使没有警报它也可能执行。

第二个选项的优点是它仅在警报显示时执行,但缺点是代码比较困惑。

哪个更好?

最佳答案

没有什么不好,但是通过删除 setTimeout 可以提高效率:

$(".alert").delay(5000).fadeTo(1500, 0).slideUp(1500, function(){
    $(this).remove(); 
});

这样,什么都不做,如果没有警报,也不会注册任何回调。

至于代码的位置,您应该避免将其放在 HTML 的中间。交错 HTML 和 Javascript 是一种不好的做法,会阻碍可维护性。一个干净的模块化 Javascript 应该是解决方案。

关于javascript - 对并不总是发生的事件执行 jQuery 脚本是否不好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29181827/

相关文章:

javascript - 如何使用 jQuery 或 C# 获取 iframe 的内容?

javascript - jquery获取输入值

javascript - 如何使用 JavaScript 获取调用者元素?

javascript - 通过 JS Laravel 访问存储目录

jquery - 如何将类添加到具有特定数据 ID 的跨度

javascript - 在使用 jquery 验证电子邮件后添加一个类

javascript - 来自文本框 html 控件的更改事件正在取消来自 html 按钮的 Click 事件(实时事件)

javascript - 如何在 Phonegap 中存储多维数组

javascript - onblur 不起作用,但 onchange 起作用吗?

jquery - 如何使用 jQuery 使图像或列表项变灰,但使图像或列表项保持可点击状态?