2009-11-03 10 views
2

Объяснение: У меня есть несколько объектов, и я объявляю их внутри $ (document) .ready(). ЗАЧЕМ? потому что в тысячах объектов у меня много методов jquery $ (..), очевидно, они могут работать и снаружи, но когда я включаю mootool, то он перестает работать. я попробовал noConflict и некоторые другие вещи, ничего не работает, только если я меняю $() на jQuery() или на $ j() .. и я не хочу менять мои 20 файлов и более 2000 строк для каждого файла. в любом случае объявляя мои объекты внутри $ (document) .ready(). заставляли их работать нормально.

Теперь мой вопрос: если я объявляю все эти объекты внутри $ .ready метода (документ)(), будет ли это сделать мой сайт медленно? или это сделает вещи медленными с клиентской стороны? Это единственная забота в моем сознании.

ответ

4

Я не вижу, как это сделает ваш сайт медленным. Объявив их в пределах $().ready, вы просто ограничиваете область своих заявлений той функцией $().ready, поэтому они не будут доступны в пределах других готовых функций на той же странице, что на самом деле не должно быть если ваше приложение хорошо спроектировано, и вы придерживаетесь одного на страницу.

О, и ваши объявления, разумеется, не будут обрабатываться до тех пор, пока DOM не будет полностью загружен (как известно, $().ready выполняется только после загрузки DOM), но это тоже не должно быть проблемой, re только используя их из готовой функции (по крайней мере, я надеюсь).

Вам действительно нужны две библиотеки? Если это всего лишь одна или две незначительные лакомые кусочки функциональности, которые вы используете из одной из этих библиотек, возможно, вы можете имитировать это поведение, используя тот, который вы максимально используете. Если вы можете/возможно сделать это, это сделает вашу жизнь , так что намного проще.

+1

Я согласен с этим в том, что я не вижу, как это могло (или должно) сделать страницу медленной. Я делаю это сам все время, иногда только ради определения области и сохранения глобального пространства Однако, несмотря на то, что я думаю, что это имеет смысл, я считаю, что единственный реальный способ убедиться в этом - это проверить его и собрать фактические показатели. С учетом сказанного я никогда не замечал никаких проблем с тем, что Я делаю это... – Funka

+0

осталось только один вопрос, который мне нужно знать. Мне нужны мои функции и в другом методе $(). ready, как я могу сделать его совместимым, поэтому он работает в обоих местах, сейчас работает только как @ karim79, определяемый – Basit

+1

@basit - единственный способ объявить их за пределами документа . Уже, о котором вы уже сказали, вы не можете * сделать из-за mootools, так что честно, я не знаю, что предложить, поэтому я думаю, что что-то должно дать :)! – karim79

-1

Просто объявить jQuery.noConflict до document.ready запроса, то псевдоним метода JQuery до $ внутри в document.ready ...

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

}); 
+0

прочитанный вопрос снова PLS, он спрашивает что-то еще :) – Basit

+0

Извините, нет, это ничего не замедлит ... – CodeJoust

1

делая все, что в jQuery.ready не будет замедлять ваш сайт.

В качестве альтернативного решения можно заменить $ с jQuery всего вашего кода JQuery, или вы можете обернуть его в функции, как это:

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

Этот код делает функцию, которая принимает paremeter под названием $, и вызывает эту функцию с помощью объекта jQuery. Параметр $ скроет глобальный объект mootools $ в рамках функции, что позволит вам написать обычный код jQuery внутри функции.

+0

спасибо, но если вы прочитаете всю мою тему .. я знаю (функция и замена $ to jQuery ..: P – Basit