Иногда загрузка JavaScript - PullRequest
       3

Иногда загрузка JavaScript

1 голос
/ 15 декабря 2010

Я хотел бы условно загрузить набор функций javascript (которые включают jQuery) на заданную страницу.

Ситуация такова, что на нашем сайте есть куча вещей, которые происходят на $(document).ready (в основномнеобычная настройка меню и несколько манипуляций с классами CSS), но одна или две страницы нуждаются в дополнительной настройке.Достаточно кода (и достаточно конкретного), чтобы я не хотел просто вставлять его в основной файл, а просто загружать его на эти конкретные страницы.

Кажется, что я не могу сделать это простозагрузка нового файла specific.js на те страницы, которые содержат

(function () {
   $(something).click(function () { Stuff(happens); });
   something(Else);
   ...
 } ());

В приведенном выше примере something(Else); работает нормально, но .click и .bind, похоже, ничего не делают.В итоге я сделал

function specificStuff () {
   $(something).click(function () { Stuff(happens); });
   something(Else);
   ...
};

и добавил if(specificStuff) specificStuff(); в основной файл js.Это работает, но кажется, что должен быть лучший способ сделать это (в идеале тот, который сохранит все изменения в specific.js и не коснется общих настроек).

Существует ли канонический способ условнозагрузка кода js для запуска в document.ready?

Ответы [ 4 ]

2 голосов
/ 15 декабря 2010

Вы можете вызывать $(document).ready(); несколько раз в файле веб-страницы / скрипта. Просто оберните ваши jquery-привязки в файл specific.js:

$(document).ready(function(){ $(something).click(function () { Stuff(happens); }); something(Else);});

0 голосов
/ 15 декабря 2010

Вы можете вызывать функцию готовности документа jquery столько раз, сколько вам нужно.Я думаю, что ваша проблема в том, как вы настроили свою функцию.Если вы пытаетесь вызвать готовую функцию, она должна выглядеть следующим образом:

$(function () {
   $(something).click(function () { Stuff(happens); });
   something(Else);
   ...
});

Также, если элементы something созданы вашим файлом main.js, вы должны включить его до вашего конкретного файла .js.

0 голосов
/ 15 декабря 2010

попробуйте удалить () при передаче функции в document.ready:

(function () {
   $(something).click(function () { Stuff(happens); });
   something(Else);
   ...
 } **()**);

с помощью () будет выполнено сразу и не будет ждать готовности документа.

0 голосов
/ 15 декабря 2010

Вы можете загрузить специфичный для страницы Javascript в html этих страниц, каждый скрипт имеет свою собственную функцию document.ready.

...