【问题标题】:jQuery not working straight away [duplicate]jQuery不能立即工作[重复]
【发布时间】:2016-06-04 20:29:30
【问题描述】:

我正在研究 Ruby on Rails,一个简单的 jQuery 不会在这样的元素上执行:

$("header").hide();

但是,如果我将它包装成一个函数并使用 document.ready 调用它,它会做正确的事情:

function myCode() {
    $("header").hide();
}

$(document).ready(myCode);

为什么它不能直接工作?我已经安装了 gem jquery-rails,甚至在 application.js 文件中有 //=required jquery.min.js。

感谢您的帮助!

【问题讨论】:

标签: javascript jquery ruby-on-rails-4


【解决方案1】:

如果文档尚未准备好,则 DOM 尚未构建。 header 元素在该代码运行时不存在,因此什么也没有发生。要执行 DOM 操作,您必须等到页面完全加载,即在$(document).ready

【讨论】:

  • 不完全准确。不一定需要加载整个 dom。可以将该代码立即放在没有$(document).ready 的元素之后,并且可以正常工作
  • 原来如此,谢谢指正!
  • 我很困惑.. 所以你说这应该直接作为 application.js 的第一行代码工作? $("header").hide();
  • 是和不是。严格来说它可以工作,但不能保证 DOM 对象在其执行时存在。您可以在文档为ready 时执行此操作,或者在创建标题元素的代码之后执行脚本
猜你喜欢
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多