2009-11-19 2 views
3

$ .getScript методов jQuery JQuery можно использовать для загрузки и выполнения javascript из удаленного местоположения ... Можно ли его также использовать, чтобы просто загрузить javascript и выполнить его позже, когда какое-то событие происходит на элементах, которые были загружены с использованием ajax на основе некоторого действия пользователя ...?

Спасибо и наилучшие пожелания ....

ответ

2

Является ли целью иметь привязку сценария к элементам, которые не загружены или снизить количество вызовов на удаленный скрипт?

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

function executeScript() { 
    $.getScript("somescript.js", 
      blah blah blah 
     ); 
} 

$(".post_loaded_elements").hover(executeScript); 

Однако, если сценарий находится на каком-то удаленном сервере, и вы не хотите делать удаленный вызов каждый раз, когда пользователь наводится на элемент, вам, вероятно, придется использовать какой-то метод сериализации, где вы запрашиваете содержимое скрипта используя другой метод ajax, и де-сериализуйте его и запустите. Это будет использовать ту же настройку, что и выше, только с дополнительным шагом для получения сценария и сериализации его в переменную, которая де-сериализуется в функции. Я сделаю быстрый чек, чтобы убедиться, что сериализация довольно просто в jquery.

+0

Hi Anthony ... Вы попали в глаз быка ... Моя цель первая ... :-) То, что я пытаюсь сделать, это загрузить различные формы и элементы в div на странице, основанной на что пользователь нажимает на меню. Элементы формы загружаются с помощью ajax, и, естественно, мы должны использовать live или bind, чтобы добавить их в дерево dom ... Но я не могу использовать live bcoz. Я хочу, чтобы событие запускаться, когда текстовое поле сфокусировано или размыто, и эти действия в настоящее время не поддерживаются живыми ... – SpikETidE

8

$.getScript загрузит и выполнит Javascript. Если вы хотите просто загрузить Javascript, вам нужно будет поместить Javascript в функцию, а затем выполнить эту функцию, когда произойдет будущее событие.

предположим, что вы звоните:

$.getScript('http://example.com/hello.js'); 

и содержит следующее:

function Hello() { 
    alert('hello'); 
} 

Javascript будет выполнен, но так как предупреждение в функции не будет побежал. Он не будет работать, пока вы не вызовете функцию Hello(). Поэтому для второй части предположим, что вы хотите подключить ее так, чтобы при щелчке по ссылке выполнялась функция Hello(). Вы можете предоставить обратный вызов для запуска после загрузки Javascript. Таким образом, вы можете сделать это:

$.getScript('http://example.com/hello.js', function() { Hello(); }); 

После загрузки скрипт, который будет установлен обработчик события щелчка на ваши ссылки, которые будут вызывать функцию Hello.

0

Да, это возможно. Я сделал следующий скрипт: он состоит из трех файлов, интерфейса, текстового поля html, загружаемого из внешнего файла, когда пользователи нажимают кнопку 2, и внешнего скрипта, который загружается, когда пользователи щелкают по первой кнопке и предупреждают значение текстового поля, которое было загружено перед скриптом, но после загрузки документа.

Нажмите кнопку 2, введите что-то в текстовое поле и нажмите кнопку 1, вот код.

HTML страницы (интерфейс)

<button id="b1">button 1</button> 
<button id="b2">button 2</button> 

JQuery

$(document).ready(function(){ 
    $("#b1").click(function(){ 
     $.getScript('externalscript.js'); 
    }); 
    $("#b2").click(function(){ 
     $("#load").load('test.html'); 
    }); 


}); 

нагруженное элемент

<input type="text" id="text" /> 

внешний скрипт

alert($("#text").val()); 
Смежные вопросы