我已经养成了使用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处理程序,这样会破坏目的(无论那个时间多么微不足道).
更好
您的代码将更容易阅读.
记住$(document).ready()也只是一个功能.
任何可以打包并放入可能可重用的函数调用的东西应该是.
可以这样想......如果你正在处理按钮的点击事件,你会这样做吗?