Jquery在不触发事件的情况下部分工作

Jquery works partly without events fires

本文关键字:情况下部 工作 事件 Jquery      更新时间:2024-03-24

我有一个html文件,里面有一些js文件和jquery。

文件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

我不想把所有的脚本都连接到一个文件中,并试图理解为什么一个文件的脚本总是很好,而另一个文件却不起作用。

有什么想法吗?

由于我们看不到您的大部分代码,我的答案只是一个很好的猜测:

原因是您的javascript是在DOM呈现之前执行的,因此尝试选择您的元素的$(...)此时找不到它。

这就是为什么jQuery有一个ready函数,它将在DOM准备好后执行:https://api.jquery.com/ready/

$(document).ready(function() {
      $(".popup").click();
      $(".popup").hide();
}

它适用于console.log语句,因为传递给它的值是在函数执行后计算的。(实际上我不知道真正的原因,必须自己研究)

编辑:是Chrome浏览器';JavaScript控制台在评估数组方面懒惰吗?解释了console.log()行为(仅铬)

的原因