Есть ли способ загрузить функцию из 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/.