$(document)中的一个元素.Ready在特定情况下没有定义

An element in $(document).ready is undefined in a certain situation

本文关键字:在特定情况下 Ready 元素 定义 document 一个      更新时间:2023-09-26
这个问题来自

实际上,我能够找到一个线索,这就是我发现的。我有一个js文件:

$(document).ready(function() {
  var myIdElement = $("#some_id");
  //............
  $.ajax({
    url: getFullUrl(myIdElement.val())
  })
  //..........

所以当我通过链接(html链接)从另一个页面来到这个页面时,myIdElement就是undefined。然而,当我重新加载页面时,它开始有一个正确的值。我用涡轮链接。

我如何让它在所有情况下工作?

$(document).ready并不总是在turbolink中着火。请使用page:load事件。在第一页上,它触发ready事件,但在随后的页面上,document始终是ready,因此不会触发document ready事件。所以,它触发page:load来帮助我们。

function ready () {
  // Your code goes here...
}
jQuery(document).ready(ready);
jQuery(document).on('page:load', ready);

试试这个:

(function($) {
$(document).ready(function() {
  var myIdElement = $("#some_id");
  //............
  $.ajax({
    url: getFullUrl(myIdElement.val())
  })
  //..........
})(jQuery);