document.ready确实有必要。这个问题已经被问过无数次了。
此代码片段与 document.ready 配合使用并且完美运行
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#p1").mouseenter(function(){
alert("You entered p1!");
});
});
</script>
</head>
<body>
<p id="p1">Enter this paragraph.</p>
</body>
</html>
但是,如果我用这个替换脚本标签内容。
$("#p1").mouseenter(function(){
alert("You entered p1!");
});
它不再起作用了。但是,如果参数是鼠标输入时文档尚未准备好。我在尝试之前等了几分钟,但仍然不起作用。有什么我错过的吗
最佳答案
您还可以将该脚本放在 body
标记的底部中。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<p id="p1">Enter this paragraph.</p>
<script>
$("#p1").mouseenter(function() {
alert("You entered p1!");
});
</script>
</body>
问:为什么 $("#p1").mouseenter()
在 head
标签中甚至在等待一段时间后仍不起作用?
答:$("#p1")
是一个函数,无论何时被调用,它都会在整个 DOM 树中查找 ID 为 p1< 的元素
并为它注册了一个事件监听器,因此当 DOM 仍在加载时,它找不到这样的元素,显然无法为其注册任何事件监听器。因此,当您将鼠标移到该元素上一段时间后,没有事件监听器分配给该元素。
关于javascript - 没有 document.ready 功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27684980/