jquery - 在声明 ready() 中调用的函数时正确使用 jquery $(document).ready()

标签 jquery

我已经养成了从ready函数开始jquery编码的习惯 $(function(){...}); 并将所有从ready调用的函数放入ready中。

然后我意识到,放入就绪函数中的一些函数可能不需要在那里。

例如,文档就绪中的事件使用的简单函数可以在其外部声明:

function checkEmail(objelement){
   var emailRx = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
   return emailRx.test(objelement.val()) ? true : false;
}

然后在其内部使用:

//code snippet for example

$(function(){

$("form[name='contactform']").submit(function(){
    $("input[type=text]").each(function(){
        if($(this).attr("id") == "email" && !checkEmail($(this))) { 
            $(this).prev().css("color","red");
       }
    });
});

});

我搜索了很多以前的问题,但似乎找不到答案。

以这种方式在ready之外声明函数是更好、更坏还是没有什么不同?

最佳答案

如果在外部声明它们,则意味着它们存在于全局范围内。

这样做的一个优点是它们可以在 document.ready 函数之外重用。缺点是它们会扰乱全局命名空间(如果需要,可以通过命名空间来避免)。

就我个人而言,如果我要重复使用它们,它们就会出去。如果它们需要引用仅存在于我的 domready 处理程序范围内的变量或其他内容,它们会进入内部(尽管通常作为匿名函数)。

最近,我把所有能做的都放在 domready 处理程序之外,因为解释器必须在开始执行处理程序之前解析 domready 处理程序中的所有函数声明,而延迟 domready 处理程序的执行有点违背了目的(无论这个时间是多么微不足道)。

关于jquery - 在声明 ready() 中调用的函数时正确使用 jquery $(document).ready(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6861178/

相关文章:

javascript - If 语句和 knockout 中的可见绑定(bind)不起作用

javascript - 未捕获的 TypeError 无法读取未定义的属性 'name'

c# - 通过 Ajax 发布到 MVC Controller

javascript - 如何在 dropzone.js 中获取选定的文件路径

javascript - Jquery 填充输入或文本区域

jquery选择器来选择一个相邻的元素?

jquery - <li> 标签中的嵌套 <a> 标签点击区域不起作用

javascript - 使用 php glob() 函数构建 Bootstrap 轮播

javascript - 如何为 &lt;input&gt; 的智能手机禁用 'save image as' 弹出窗口

jquery - this.id 与 $(this).attr ('id' )