我有以下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()
。为什么?有人能指出我正确的方向吗?
谢谢!
答案 0 :(得分:4)
您已使用函数表达式定义another
并将其传递给$()
。
你需要让它成为一个全球性的。
因为你在包含它之后调用它,你可能不需要将它传递给$()
,所以只需要摆脱它周围的包装,它将是一个函数声明(和全球性的。
答案 1 :(得分:1)
很少有事情需要考虑:
首先,你不能在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在本地测试了你的代码,它工作正常。