gpt4 book ai didi

javascript - Jquery 不会在 Rails 中触发 document.ready

转载 作者:行者123 更新时间:2023-11-28 01:25:26 26 4
gpt4 key购买 nike

我无法让 jquery 为我的一生工作。我正在处理两个页面,都需要 JavaScript。

第一页是我的主页。它有简单的 CoffeeScript 来显示文档加载警报

$(document).ready ->
alert('ready')

第二页有它自己的 CoffeeScript ,我不会粘贴到这里。

当我加载主页时,此 document.ready 不会触发。但是,如果我加载第二页,它的代码和此警报就会被触发。

这让我相信 jquery 没有被加载。所以我继续测试了一些东西

  1. Jquery 是第一个包含的 javascript 文件,主页的 javascript 文件是倒数第二个包含的文件(最后一个是 application.js)。
  2. 第二页的脚本文件包含在主页脚本文件之前
  3. 删除 Turbolink 并不能解决问题。

所以我决定看看是否可以做点什么。

alert 'test'
$(document).ready ->
alert('ready')

将在主页上触发“测试”警报。

此外,如果我在主页底部包含脚本标签,并放入一些 jquery 来防止表单提交,它就可以正常工作。下面是代码:

<script type="application/javascript">
$("#formtest").submit(function(e){
e.preventDefault();
alert('No submit');
});
</script>

但是,

<script type="application/javascript">
$(document).ready(function(){
alert('hello');
});
</script>

还是不行。这告诉我主页没有触发 DOM 加载事件。

编辑:

看来第二页的 javascript 中的 $(document).ready -> ... 搞砸了这一页。这是为什么?

最佳答案

正如我在评论中提到的,对我有用的一个解决方案是让 jquery 事件也以这种方式触发:

$(document).on('page:load', yourFunctionHere)

另一个解决方案是安装以下 gem:

gem 'jquery-turbolinks'

使用该 gem 将允许您使用 DOM 加载事件来触发所有必要的 jquery 函数。

关于javascript - Jquery 不会在 Rails 中触发 document.ready,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22737066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com