У меня есть следующие main.js
$(document).ready(function() {
$.getScript('another.js', function() {
another();
});
});
... и следующий another.js
$(function another() {
$('section#my-section').after('<a href="#">my link</a>');
});
Структура каталогов выглядит следующим образом:
+ my.html
+ js
+--- main.js
+--- another.js
another()
никогда не вызывается. Зачем? Может ли кто-нибудь указать мне в правильном направлении?
Благодарю!
Вы определили another
используя выражение функции, и передали его в $()
.
Вы должны сделать его глобальным.
Так как вы вызываете его после его включения в любом случае, вам, вероятно, не нужно передавать его в $()
, поэтому просто избавляйтесь от этой оболочки вокруг него, и это будет объявление функции (и глобальное).
Мало что нужно учитывать:
Сначала вы не можете вызвать another() внутри main.js, потому что он завернут внутри $() и его недоступно в глобальной области. Поэтому вам нужно удалить этот другой();
Таким образом, ваш код в another.js
будет похож на
function another() {
$('section#my-section').after('<a href="#">my link</a>');
}
Тогда, если вы тестируете это в своем локальном браузере Chrome, это может не сработать.
Поскольку chrome
не поддерживает локальный вызов ajax, и он не даст XMLHttpRequest cannot load
В любом случае в firefox
и других браузерах он будет работать нормально.
Просто вам нужно загрузить main.js
после jquery
Я проверил ваш код на своем локальном компьютере, используя firefox, и он отлично работал.
$(function another() {...});
не может работать должным образом при попытке вызвать another()
метод another()
снова. То есть, следуя коду OP, OP не нужно вызывать этот метод при успешном обратном вызове $ .getScript (), не имеет смысла