在 Rails 中使用 jQuery 就绪事件时,我注意到一些奇怪的事情。如果将处理程序添加到该<head>
部分中,直接在脚本标记中或包含在使用的资产管道文件中<%= javascript_include_tag ...
,它将仅在第一个页面请求上执行,而不是在后续请求上执行。也就是说,加载/刷新页面的显式浏览器操作将执行它,但通过点击链接触发的新页面视图不会。
另一方面,如果它包含在 中<body>
,它会在每次页面查看时触发 - 正如您所期望的那样。
<head>
<script>
jQuery(document).ready(function(){
console.log('READY in head'); // Fires on first page load only
});
</script>
</head>
<body>
<script>
jQuery(document).ready(function(){
console.log('READY in body'); // Fires every time
});
</script>
</body>
真的很迷茫。我在我所有的 Rails 应用程序中都看到了它,但不明白 Rails 是如何影响这一点的,因为 jQuery 是一种客户端技术?