我已经养成了从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/