jQuery ajax load () Java-скрипт не выполняется? - PullRequest
7 голосов
/ 23 августа 2009

Я прочитал несколько сообщений об этой проблеме, но не могу ее решить.

Я загружаю HTML-файл в div. Файл, который я загружаю, содержит неупорядоченный список. Этот список должен быть расширен (меню с пунктами подменю) и закрыт. Поэтому мне нужно JS. Но, к сожалению, этот скрипт не загружен.

Кто-нибудь может мне помочь?

Было бы так здорово! Большое спасибо:)

Ответы [ 8 ]

12 голосов
/ 28 июля 2010

Вы хотите загрузить через AJAX в div на вашей странице, давайте позвоним;

1) <div id="loadStuffHere"></div> из (abc.html)

2) материал для заполнения loadStuffHere взят из xyz.html

Так что просто сделай это;

$("loadStuffHere").load("xyz.html");

НО ПОДОЖДИТЕ! Вы не хотите загружать все из xyz.html, вы просто хотите загрузить часть xyz.html, скажем <div id="loadMeOnly"></div> из (xyz.html)

Так что просто сделай это;

$("loadStuffHere").load("xyz.html #loadMeOnly");

НО ПОДОЖДИТЕ! Допустим, внутри <div id="loadMeOnly"></div> есть аккордеон, что означает, что его нужно инициализировать, что означает, что вы должны также включать javascripts ... хм, что делать ...

Вы бы подумали об этом;

$("loadStuffHere").load("xyz.html #loadMeOnly");
$.getScript('js/xyz.js');

Хорошо, вышеприведенный отстой, потому что а) вам нужно будет создать внешний js-файл и б) вы фактически делаете 2 http-вызова, когда вы могли бы сделать это с 1 http-вызовом, если вы делали это обычным не-ajax способом.

Лучшее решение - получить 2 вещи с одним вызовом (HTML и строка js - 1, 1 http), вот как вы это делаете;

$("loadStuffHere").load("xyz.html #loadMeOnly, script");

Это загружает #loadMeOnly div И все script теги

Хитрость здесь в запятых. Вы можете выбрать любой дом, который вы хотите

2 голосов
/ 22 ноября 2013

Скрипт не может использовать document.ready, документ уже готов. Просто поместите скрипт между тегами скрипта.

неправильно:

<script type="text/javascript">
   $(document).ready(function() { 
       alert($('div').html());
   });
</script>

правильно:

<script type="text/javascript">
       alert($('div').html());
</script>
2 голосов
/ 05 апреля 2012

Это решение работает лучше всего. Использование функции обратного вызова после загрузки определенного контейнера div или содержимого.

$('#CONTAINER').load('URL_TO_LOAD HTML_ELEMENT_TO_PLUCK_FROM_PAGE_AND_INSERT_INTO_CONTAINER', function () {
    $.getScript('PATH_TO_SCRIPT_THAT_YOU_REQUIRE_FOR_LOADED_CONTENT');
});
2 голосов
/ 23 августа 2009

Juhu. Я решил это. Не знаю, это самый элегантный способ, но он работает:)

jpsilvashy ваш getscript (); сделал это :) Я включил эти две строки в мой контент, который должен быть загружен:

<script type="text/javascript"> 
$.getScript("js/tutorial-1.js");
$.getScript("js/jquery.ahover.js");
</script>

это работает.

Для всех, у кого такая же проблема, есть небольшая подсказка. Вы должны удалить теги body и head. Если они включены, это не работает.

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

Но это только некоторые предположения!

Спасибо за вашу большую помощь!

2 голосов
/ 23 августа 2009

Итак, давайте сначала убедитесь, что у вас загружен jQuery, убедитесь, что ссылка на библиотеку находится в заголовке вашего HTML, так что-то вроде этого:

<script src="/javascripts/jquery-1.3.2.min.js" type="text/javascript"></script>

Используйте firebug , чтобы убедиться, что он загружен, проверив вкладку "net".

Также убедитесь, что вы загружаете свой javascript: (здесь я назвал его "основным")

<script src="/javascripts/main.js" type="text/javascript"></script>

Затем в вашем файле js сделайте что-то вроде:

$.(document).load( function () {
  alert("loaded!")
});

Это должно привести к срабатыванию оповещения, когда страница «полностью загрузится». Я предпочитаю использовать ready(), который будет срабатывать после загрузки DOM.

Если у вас все это работает, и вы действительно хотите загрузить и выполнить js из вашего js-файла, попробуйте следующее:

.getScript()

Это загрузит и выполнит нужный вам JavaScript.

0 голосов
/ 01 июня 2015

Вы можете загрузить файл javascript динамически с помощью jQuery.getScript и установить функцию обратного вызова. Когда скрипт был загружен, вызывается функция обратного вызова. Вот пример загрузки библиотеки highlightjs из cdnjs :

$.getScript("https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.6/highlight.min.js", function () {
    $('pre code').each(function(i, block) {
        // hljs now is available
        hljs.highlightBlock(block);
    });
});
0 голосов
/ 23 августа 2009

Ааа, понятно ... Если вы просто хотите загрузить html, используйте:

$("selector for div ").load("/path_to_html.html div#main");

Где div#main - это div, который я хочу получить в вашем удаленном файле, но помните, что это должен быть тот же домен, чтобы он работал.

0 голосов
/ 23 августа 2009

Вам необходимо явно вызвать ahover в неупорядоченном списке. См. Документ .

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