我有一些带有几个js文件和jquery的html文件。
文件1.js中的脚本运行正常。 来自文件2.js的脚本也可以正常工作,但Jquery总是不起作用。 所以我运行一些脚本,结果它应该隐藏“.popup”。一切正常 - 我向控制台运行一条消息,但hide()或click()等事件不起作用。
console.log("All done!");//works
console.log($(".popup"));//works fine – shows the right element in console
$(".popup").click();//doesn't work
$(".popup").hide();//doesn't work
我不想将所有脚本连接到一个文件中,并试图理解为什么一个文件中的脚本总是很好,而另一个文件没有任何效果。
有什么想法吗?
答案 0 :(得分:1)
由于我们看不到你的代码,我的答案只是一个很好的猜测:
原因是你的javascript是在渲染DOM之前执行的,因此$(...)
试图选择你的元素,此时无法找到它。
这就是为什么jQuery有一个ready
函数,一旦你的DOM准备好就会执行它:https://api.jquery.com/ready/
$(document).ready(function() {
$(".popup").click();
$(".popup").hide();
}
它适用于您的console.log
语句,因为传递给它的值是在执行函数后计算的。 (实际上我不知道这个的真正原因,必须自己研究)
修改:Is Chrome's JavaScript console lazy about evaluating arrays?解释了console.log()
行为的原因(仅限Chrome)