为什么点击事件在这种情况下不会触发,虽然DOM似乎已加载('准备好'在控制台中显示)?
$(document).ready(function() {
console.log("ready!");
});
$("p").click(function() {
alert("You clicked on paragraph.");
});
我的理解是,因为点击事件的代码是在文档就绪函数正确执行之后,它应该可以工作,但它不会。只有在就绪函数中的花括号之间包含事件时,它才有效。
答案 0 :(得分:3)
$(document).ready
是异步的。您正在向它传递一个回调函数,以便它记录DOM准备就绪的事实。但是,click
绑定代码在您设置ready
处理程序后立即执行,而不是在回调执行时执行。
您只需要确保将绑定逻辑放在ready
处理程序中。
答案 1 :(得分:1)
您可以将代码直接放在$(document).ready()
函数中,也可以在DOM
准备就绪时创建一个绑定点击的新功能。
$(document).ready(function() {
bindClickEvent();
});
function bindClickEvent() {
$("p").click(function() {
alert("You clicked on paragraph.");
});
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<p>Click me!</p>
&#13;
答案 2 :(得分:1)
如果您希望在&#34; ready&#34;中执行该代码。事件,把它移到那里。
$(document).ready(function() {
console.log("ready!");
$("p").click(function() {
alert("You clicked on paragraph.");
});
});
您现在定义它的方式并不意味着它在加载DOM时执行。