说明: 我有几个对象,我在$(document).ready()中声明它们。为什么?因为在thous对象中我有很多jquery方法$(..),显然它们也可以在外面工作,但是当我包含mootool时,它就会停止工作。我尝试noConflict和其他一些东西,没有任何作用,只有当我将$()更改为jQuery()或$ j()..并且我不想更改我的20个文件和每个文件超过2000行。无论如何在$(document).ready()中声明我的对象。让他们工作得很好。
现在我的问题是: 如果我在$(document).ready()方法中声明所有这些对象,它会让我的网站变慢吗?还是会让客户端的事情变慢?这是我脑海中唯一关注的问题。
答案 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($){
});