2010-02-12 2 views
1

Я работаю над шаблоном сайта, который загружает заголовок, нижний колонтитул и динамическое тело. У меня есть класс, в котором я указываю, какие скрипты будут загружаться в зависимости от текущей страницы, и пользователь, зарегистрированный в статусе. Я написал несколько JQuery плагинов, и при загрузке страницы Мне нужно позвонить по плагинам черезДокумент готов, есть ли предел?

$ (документ) .ready (функция() {// $(). ThePlugin() }) ;

У меня лично не было более одного сценария готовой документации на каждой странице, которая называла это, но я не вижу другого выбора. Неужели плохая практика имеет 4 или 5 сценариев, вызывающих эту функцию?

ответ

0

Если вы используете PHP, изучили ли вы использование автозагрузчика PHP?

http://php.net/manual/en/language.oop5.autoload.php

Это может помочь вам сократить запросы, и позволяют последний шанс включает.

+0

Я посмотрю, когда буду работать. Спасибо за предложение! – cdnicoll

0

Это не функция, которую вы вызываете, но событие, к которому вы подключаетесь ... нет ничего плохого в том, чтобы делать это несколько раз, но не зависеть от того, что они запускаются в определенном порядке.

Боковой наконечник, это эквивалентно ярлык:

$(function() { $().thePlugin(); }); 

Кроме того, если они являются общими для всех страниц, переместить их на внешний .js файл. Если там не так много, то несколько селекторов, которые ничего не найдут, не повредят. Это всего лишь компромисс, основанный на том, какой% кода вы используете в% случаев.

2

Наличие нескольких блоков ready() на одной странице в порядке. Фактически, он настроен так, что вы можете это сделать. Старый метод (обычно используется на load() событий) сделал такие вещи, как:

window.onload = function() { 
    ... 
} 

но быстро сломался, когда несколько сценариев оба назначенных load() обработчики, которые привели к:

function addLoad(handler) { 
    var current = window.onload; 
    if (current) { 
    window.onload = function() { 
     current(); 
     handler(); 
    } 
    } else { 
    window.onload = handler; 
    } 
} 

Ну, там немного было более того, но это был основной принцип. jQuery по существу позаботится об этом шаблоне для вас, чтобы ваши обработчики событий не сжимали друг друга.

Несколько обработчиков ready() упрощают обслуживание кода и, вероятно, его легче читать. Если вы только делаете несколько, тогда даже не беспокойтесь об этом. Если вы получите до сотни (на одной странице), то, возможно, пришло время переосмыслить.

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

+0

Спасибо, основной ответ, который я искал! – cdnicoll

+0

Вы должны принять этот вопрос в качестве ответа. Это займет всего секунду. –

Смежные вопросы