[英]$(document).ready() doesn't work
这是html代码:
<!doctype html>
<html>
<head>
<title>title</title>
<meta charset="utf-8">
<script src="vendor/jquery.js"></script>
<script>
$(document).ready($(".voice").click(function() {
alert("succeed");
}));
</script>
</head>
<body>
<div class="container">
<div class="voice-div">
<input type="text" class = "voice" />
</div>
</div>
</div><!-- close class="wrapper" -->
<!-- the support button on the top right -->
</body>
</html>
当我点击input
, alert
没有弹出。 但是当我放
<script>
$(document).ready($(".voice").click(function() {
alert("succeed");
}));
</script>
就在</body>
之前,它起作用了。 为什么? 如果我想将脚本放在<head>...</head>
部分,我应该如何修改代码?
我认为您不能立即嵌入$(document).ready...
块中的事件声明。 尝试将代码更改为以下内容:
$(document).ready(function () {
$(".voice").click(function() {
alert("succeed");
});
});
或简写为:
$(function () {
$(".voice").click(function() {
alert("succeed");
});
});
你必须ready
一个功能 。
您正在向它传递调用.click()
的返回值。 因此,绑定单击处理程序的尝试立即发生(并且由于元素尚未在DOM中而失败)并且ready
函数忽略了传递给它的值(因为这不是函数)。
$(document).ready(
function () {
$(".voice").click(
function() {
alert("succeed");
}
);
}
);
但是当我把它放在
</body>
之前时,它起作用了。
这是因为元素存在于那一点。 ready事件绑定仍然失败,但是您传递的表达式首先成功绑定了click事件。
该脚本应该如下所示:
$(document).ready(function() {
$(".voice").click(function() {
alert("succeed");
});
});
它是关于添加回调,函数'对象'。 您正在做的是在脚本加载时立即调用函数(单击然后发出警报),并将结果(如果有)作为参数传递。
原因是,你没有以正确的方式编码。 将代码更改为:
<script>
$(document).ready(function() {
$(".voice").click(function(){
alert("succeed");
});
});
</script>
在你的代码中,你已经把: $(".voice").click
里面准备作为参数,这就是为什么javascript立即执行它而不是在document.ready上,所以它将在body标签之后但不在它之前。
如果你想在就绪功能之外调用它,你可以试试这样的东西
$(document).on("click",".voice",function()
{
alert ('called');
}) ;
在这种情况下,当您在ajax成功后应用具有此类名称的新元素时,您仍然可以在ajax请求之后使用它。
<script>
$(document).ready(function() {
$(".voice").click(function() {
alert("succeed");
});
});
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.