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

jk.*_*jk. 16 jquery

我已经养成了使用ready函数启动jquery编码$(function(){...});并将所有已准备好的函数放入就绪状态的习惯.

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

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

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

然后在里面使用:

//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");
       }
    });
});

});
Run Code Online (Sandbox Code Playgroud)

我搜索了许多以前的问题,似乎无法找到答案.

以这种方式在准备之外声明功能是更好,更糟还是没有什么不同?

Phi*_*rez 15

如果你在外面声明它们,那就意味着它们存在于全局范围内.

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

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

最近,我一直把domready处理程序之外的所有内容都放在domready处理程序之外,因为解释器必须在开始执行处理程序之前解析domready处理程序中的所有函数声明,并且延迟执行你的domready处理程序,这样会破坏目的(无论那个时间多么微不足道).


Bon*_*nyT 6

更好

您的代码将更容易阅读.

记住$(document).ready()也只是一个功能.

任何可以打包并放入可能可重用的函数调用的东西应该是.

可以这样想......如果你正在处理按钮的点击事件,你会这样做吗?