2

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

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

4

3 回答 3

4

我不明白这样做会使您的网站变慢。通过在其中声明它们,$().ready您只是将声明的范围限制为该特定$().ready函数,因此它们将无法在同一页面上的其他就绪函数的范围内使用 - 如果您的应用程序不应该真的很麻烦是精心设计的,你坚持每页一个。

哦,在 DOM 完全加载之前,您的声明肯定不会被解析(如您所知,$().ready仅在 DOM 加载后执行),但这也不应该成为问题,因为您只是从在准备好的功能内(至少我希望如此)。

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

于 2009-11-04T00:14:39.580 回答
1

做任何事情jQuery.ready都不会减慢您的网站速度。

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

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

这段代码创建了一个函数,该函数接受一个名为 的参数,并使用该对象$调用该函数。jQuery$参数将在函数范围内隐藏mootools的全局$对象,允许您在函数内部编写普通的jQuery代码。

于 2009-11-04T00:06:03.073 回答
-1

只需 在请求jQuery.noConflict之前声明,然后将 jQuery 方法别名为 $ within ...document.readydocument.ready

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

});
于 2009-11-04T00:01:19.787 回答