Jquery部分没有事件火灾

时间:2016-04-09 18:12:25

标签: javascript jquery

我有一些带有几个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

我不想将所有脚本连接到一个文件中,并试图理解为什么一个文件中的脚本总是很好,而另一个文件没有任何效果。

有什么想法吗?

1 个答案:

答案 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)