jal*_*rin 15 javascript jquery javascript-events
我是Javascript和jQuery的新手.我想单击一个按钮并执行js功能.(对于这个例子,它只是一个警报,但它实际上是一个ajax函数.)
出现第一个警报,但是在我单击按钮后,我从未看到第二个警告("已做")警报.看起来javascript不认为单击按钮时定义了doIt()函数.
这是相关的代码:
$(document).ready(function()
{
alert('ready');
function doIt() {
alert('did it');
};
}
)
<body>
<input name="Go" type="button" value="Go" onclick="doIt();"/>
</body>
Run Code Online (Sandbox Code Playgroud)
Nic*_*ver 33
这是因为该功能不在全局环境中,而是您onclick=""正在寻找它的地方.你需要把它移到你的外面document.ready(所以它不是专门用于那个闭包),或者(一种更好的方法IMO)将它绑定在里面document.ready,这就是我的意思:
将其绑定(删除你onclick=""的内容):
$(document).ready(function() {
alert('ready');
$("input[name='Go']").click(doIt);
function doIt() {
alert('did it');
}
});
Run Code Online (Sandbox Code Playgroud)
或匿名版本(再次删除你的onclick=""):
$(document).ready(function() {
alert('ready');
$("input[name='Go']").click(function() {
alert('did it');
});
});
Run Code Online (Sandbox Code Playgroud)
或者将它移到外面(保持你的onclick=""):
$(document).ready(function() {
alert('ready');
});
function doIt() {
alert('did it');
}
Run Code Online (Sandbox Code Playgroud)
Kon*_*rak 15
您可以在document.ready中将doIt定义为函数语句.
您应该使用函数表达式 或从ready函数声明函数.
$(document).ready(function()
{
alert('ready');
doIt = function() { //now has global scope.
alert('did it');
};
}
)
<body>
<input name="Go" type="button" value="Go" onclick="doIt();"/>
</body>
Run Code Online (Sandbox Code Playgroud)
(是的,onClick实际上不是jQuery的做法,可能应该被ready函数中定义的click处理程序所取代,但是它可以正常工作.