使用jQuery在同一页面上可以使用“$ document.ready”函数的数量是否有限制?

时间:2010-03-08 20:04:31

标签: jquery

我有一个简单的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”方法相当容易,但我只会这样做,如果它是可取的,因为它比我现在的方式更清洁。

1 个答案:

答案 0 :(得分:4)

没有限制,你必须重构的唯一原因是控制执行顺序。

浏览器js引擎对$()一无所知。这是一个jquery函数,旨在提供跨平台的一致行为。

你做得很好。