jQuery $(document).ready();声明其中的所有功能

时间:2009-11-03 23:53:26

标签: mootools conflict jquery conflicting-libraries

说明: 我有几个对象,我在$(document).ready()中声明它们。为什么?因为在thous对象中我有很多jquery方法$(..),显然它们也可以在外面工作,但是当我包含mootool时,它就会停止工作。我尝试noConflict和其他一些东西,没有任何作用,只有当我将$()更改为jQuery()或$ j()..并且我不想更改我的20个文件和每个文件超过2000行。无论如何在$(document).ready()中声明我的对象。让他们工作得很好。

现在我的问题是: 如果我在$(document).ready()方法中声明所有这些对象,它会让我的网站变慢吗?还是会让客户端的事情变慢?这是我脑海中唯一关注的问题。

3 个答案:

答案 0 :(得分:4)

我不知道这样做会让你的网站变慢。通过在$().ready内声明它们,您只是将声明的范围限制为特定的$().ready函数,因此它们将无法在其他的范围内使用在同一页面上准备好功能 - 如果你的应用程序设计得很好并且你每页都坚持一个,那么这应该不会太麻烦。

哦,你的声明肯定不会被解析,直到DOM完全加载,(如你所知,$().ready只在DOM加载后执行),但这也不应该是一个问题因为你只是在准备好的功能中使用它们(至少我希望如此)。

你真的需要两个图书馆吗?如果它只是你从其中一个库中使用的一两个小功能,那么你可以使用你最大限度地利用它来模仿这种行为。如果你可以/可行地做到这一点,它将使你的生活如此更加简单。

答案 1 :(得分:1)

jQuery.ready中执行所有操作不会减慢您的网站速度。

作为替代解决方案,您可以在所有jQuery代码中将$替换为jQuery,或者将其包装在如下函数中:

(function($) {
    $('whatever').something();
})(jQuery);

此代码生成一个函数,该函数采用名为$的参数,并使用jQuery对象调用该函数。 $参数将隐藏函数范围内的mootools全局$对象,允许您在函数内部编写普通的jQuery代码。

答案 2 :(得分:-1)

宣布 在jQuery.noConflict请求之前document.ready,然后在document.ready ...中将jQuery方法别名为$ within ...

jQuery.noConflict();
jQuery(document).ready(function($){

});