这是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>
部分,我应该如何修改代码?
答案 0 :(得分:15)
我认为您不能立即嵌入> [1; -2; 3] |> replaceNegatives;;
val it : int list = [1; 0; 3]
> [1; -2; 3] |> isCorrupt;;
val it : bool = true
> [1; 2; 3] |> replaceNegatives;;
val it : int list = [1; 2; 3]
> [1; 2; 3] |> isCorrupt;;
val it : bool = false
块中的事件声明。尝试将代码更改为以下内容:
$(document).ready...
或简写为:
$(document).ready(function () {
$(".voice").click(function() {
alert("succeed");
});
});
答案 1 :(得分:11)
您必须通过ready
功能。
您正在将调用的返回值传递给.click()
。因此,绑定点击处理程序的尝试会立即发生(并且因为元素还没有在DOM中失败),ready
函数会忽略您传递给它的值(因为它不是&#39; ta功能)。
$(document).ready(
function () {
$(".voice").click(
function() {
alert("succeed");
}
);
}
);
但是当我在
</body>
之前放右时,它就有用了。
这是因为元素存在于那一点。 ready事件绑定仍然失败,但是您传递的表达式首先成功绑定了click事件的返回值。
答案 2 :(得分:4)
该脚本应该如下所示:
$(document).ready(function() {
$(".voice").click(function() {
alert("succeed");
});
});
关于添加回调,功能&#39;对象&#39;。您正在做的是在脚本加载时立即调用函数(单击然后发出警报),并将结果(如果有)作为参数传递。
答案 3 :(得分:3)
原因是,你没有以正确的方式编码。将代码更改为:
<script>
$(document).ready(function() {
$(".voice").click(function(){
alert("succeed");
});
});
</script>
在你的代码中,你已经准备好了$(".voice").click
作为参数,
这就是为什么javascript立即执行它而不是在document.ready上执行它所以它将在body标签之后但不在它之前工作。
答案 4 :(得分:0)
如果您想在就绪功能之外调用此功能,可以尝试这样的
$(document).on("click",".voice",function()
{
alert ('called');
}) ;
在这种情况下,当您在ajax成功后应用具有此类名称的新元素时,您仍应该在ajax请求之后使用它。
答案 5 :(得分:-2)
<script>
$(document).ready(function() {
$(".voice").click(function() {
alert("succeed");
});
});
</script>