Скрипты удаляются с помощью jQuery .load

Я не думаю, что этот вопрос задавался раньше, по крайней мере, не так, как мне нужно на него ответить. Я использую функцию jQuery .load. У меня проблема при загрузке только фрагментов страницы.

При использовании чего-то вроде:

$('#content').load('loadTest.html');

Все скрипты в loadTest.html загружаются нормально. Однако при загрузке таких фрагментов страницы:

$('#content').load('loadTest.html #content');

сценарии удаляются перед обновлением DOM

Это четко задокументировано в http://api.jquery.com/load/ , который говорит:

Примечание: При вызове .load () с использованием URL без суффиксированного выражения селектора, содержимое передается в .html () до того, как скрипты будут удалены. Это выполняет блоки сценария, прежде чем они будут отброшены. Однако, если .load () вызывается с выражением селектора, добавленным к URL-адресу, сценарии удаляются до обновления DOM, поэтому они никогда не выполняются. Пример обоих случаев можно увидеть ниже:

Я понимаю, что могу просто загрузить сценарий извне, который можно использовать где угодно, но дело в том, что я использую систему ajax для всей страницы, где все загружается динамически. Так что мне действительно не хочется иметь каждую функцию javascript, которую я когда-либо напишу (на данный момент 100) во внешних файлах. Тем более, что некоторые из этих функций javascript созданы из значений, загруженных из базы данных, которые я не могу учесть в файле .js.

Есть ли способ обхода скриптов, удаляемых перед обновлением DOM? Могу ли я как-то вручную загрузить их? Любой крошечный пример был бы мне полезен.

8
задан Lion 18 December 2011 в 06:07
поделиться