我有一个简单的JavaScript文件,它有三个jQuery“$ document.ready”函数。这三个都将facebox模态对话框附加到我页面上的各个链接。
这意味着我三次打电话给“$ document.ready”。
首先,这是可取的吗?这是我应该避免做的事情吗?
该应用程序工作正常,但我想知道浏览器更喜欢一个“$ document.ready”功能。
我不确定这里的最佳做法是什么。这是代码(它是一个rails应用程序):
$(document).ready(function() {
$('#login-link').facebox({
loadingImage : '/images/loading.gif',
closeImage : '/images/closelabel.gif',
});
$.facebox.settings.opacity = 0.75;
$(document).bind('reveal.facebox', function() {
$('#new_user_session').submit(function() {
$.post(this.action, $(this).serialize(), null, "script");
return false;
});
});
});
$(document).ready(function() {
$('#contact-link').facebox({
loadingImage : '/images/loading.gif',
closeImage : '/images/closelabel.gif',
});
$.facebox.settings.opacity = 0.75;
$(document).bind('reveal.facebox', function() {
$('#new_contact').submit(function() {
$.post(this.action, $(this).serialize(), null, "script");
return false;
});
});
});
jQuery(document).ready(function($) {
$('a[rel*=facebox]').facebox()
})
现在,将这些代码重构为一个“$ document.ready”方法相当容易,但我只会这样做,如果它是可取的,因为它比我现在的方式更清洁。
答案 0 :(得分:4)
没有限制,你必须重构的唯一原因是控制执行顺序。
浏览器js引擎对$()一无所知。这是一个jquery函数,旨在提供跨平台的一致行为。
你做得很好。