Есть ли способ загрузить функцию из htm, который вы загружаете с помощью.load()? JQuery

В моем главном окне main.htm у меня есть кнопка div, которая при нажатии загружает другой файл htm в большой div. Я использую.load() для достижения этой цели:

 $('#mainpanel').load("search.htm");

В "search.htm" есть функция, которая называется test() который состоит только из alert("hi"); и я хочу, чтобы это загрузить, когда search.htm загружается в div. Я использовал тело onload тег и window.onload = test; и даже $( document ).ready() но ничего не работает. Это работает, только если я получаю доступ к search.htm самостоятельно, но если я получаю к нему доступ через main.htm это не предупреждает "привет". Есть ли способ использовать .load() загрузить страницу и функцию? или есть способ получить функцию onload когда я выбираю div, который загружает страницу?

2 ответа

Решение

Onload / document ready срабатывает только один раз (при загрузке родительского документа)

Либо добавить

<script type="text/javascript">
    test();
</script>

до конца search.htm (так что выполняется после того, как все остальное на странице было проанализировано) или вызов test(); с родительской страницы после завершения загрузки (через обратный вызов)...

$('#mainpanel').load("search.htm", function(){
    test();
});

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

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

Вы можете передать обратный вызов .load и получить доступ к функции внутри. Обратный вызов выполняется, когда загружается другая страница:

$('#mainpanel').load("search.htm", function() {
    test();
});

Конечно test должен быть в глобальной области видимости, чтобы это работало.


Как всегда, рекомендуется прочитать документацию о методах, которые вы используете: https://api.jquery.com/load/.

Другие вопросы по тегам