JQuery AJAX и HTML - PullRequest
       19

JQuery AJAX и HTML

2 голосов
/ 14 июня 2009

Кто-нибудь знает, как выполнять функции JavaScript в HTML, который загружается через AJAX? Я имею в виду HTML содержит как простой текст, так и JavaScript. В моем случае кажется, что выполняется только встроенный JavaScript (например, onclick = "dosomething (); return false"). Предопределенные функции, которые заключены в , к сожалению, игнорируются ..

У меня есть несколько статей поиска по сайту, но результаты либо используют getScript для загрузки чистого js, либо используют eval. пожалуйста, помогите мне выйти из этого! Большое спасибо!

Ответы [ 5 ]

3 голосов
/ 14 июня 2009

Файл 1:

<script type="text/javascript">
function test() {
  alert('i got loaded dynamically!');
}
</script>

Файл 2:

$.get('file1.html', function(html) {
  $(document).append(html);
  test(); // alerts "i got loaded dynamically!"
});

Увидеть это в действии .

2 голосов
/ 14 июня 2009

Согласно документу , если вы используете $.ajax и указываете тип данных "html", включенные теги сценария оцениваются при вставке в DOM. Убедитесь, что ваш сервер возвращает правильный тип данных, см. Указание типа данных для запросов AJAX для получения дополнительной информации

Если это не помогает, подход Артема также работает хорошо, если вы делаете запрос только один раз . Если вы делаете один и тот же $.get вызов снова и снова, вы получите несколько копий вашего FunctionCall в голове, и произойдут странные вещи: -)

0 голосов
/ 14 июня 2009

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

0 голосов
/ 14 июня 2009

Если я вас правильно понимаю, вы получите от вашего AJAX-вызова простой HTML, смешанный с кодом JavaScript, например, с тэгами. Я не проверял это, но вы можете попробовать сделать следующее:

$.get( ajaxURL, function( data)
{
   $( "head").append( $( data).find( "script"));
   yourFunctionCall( );
});
0 голосов
/ 14 июня 2009

Поиск делегирования события jquery и метода .live ().

http://docs.jquery.com/Events/live#typefn

Делегирование событий особенно полезно и эффективно, если вы работаете с большим фрагментом html, который вы добавили динамически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...