伙计们我在script.js中有这个功能:
$(document).ready(function() {
function alert() {
alert('AAAAAAAA');
}
});
我试图在我的index.html中调用:
$('.something').on('click', function() {
e.preventDefault();
alert();
});
但是显示我的错误 - 未定义警报。
但是当我在外部脚本中取消文档时,单击处理程序将起作用。那是为什么?
准备好的文件正在创建一个单独的范围?
答案 0 :(得分:4)
使用$(document).ready()
创建新的功能范围(请注意function()
之后的.ready
),因此当您致电时
$(document).ready(function() {
function alert() {
alert('AAAAAAAA');
}
});
alert
仅在document.ready
块中定义。有两种方法可以解决这个问题:
定义document.ready
块之外的函数:
function customAlert() {
alert('AAAAAAAA');
}
将函数附加到window
对象:
$(document).ready(function() {
window.customAlert = function() {
alert('AAAAAAAA');
};
});
答案 1 :(得分:1)
将click事件包含在document.ready
中在此处查看http://jsfiddle.net/fbrcm45q/1/
$(document).ready(function() {
function showAlert() {
alert('AAAAAAAA');
}
$('.something').on('click', function(e) {
e.preventDefault();
showAlert();
});
});
答案 2 :(得分:0)
首先,e.preventDefault是一个函数,所以你必须在最后添加大括号:
e.preventDefault()
第二个警报是javascrpt中的一个函数,因此您需要将函数重命名为其他函数,例如:
$(document).ready(function() {
function special_alert() {
alert('AAAAAAAA');
}
});
和
$('.something').on('click', function() {
e.preventDefault();
special_alert();
});