$(document).ready中的元素在某种情况下是未定义的

时间:2014-06-28 08:11:42

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

这个问题来自

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

$(document).ready(function() {
  var myIdElement = $("#some_id");

  //............
  $.ajax({
    url: getFullUrl(myIdElement.val())
  })
  //..........

因此,当我通过链接(html链接)从另一个页面访问此页面时,myIdElementundefined。但是,当我重新加载页面时,它开始具有适当的值。我使用turbolinks。

如何让它在所有情况下都能正常工作?

2 个答案:

答案 0 :(得分:1)

$(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);

答案 1 :(得分:0)

试试这个:

(function($) {
$(document).ready(function() {
  var myIdElement = $("#some_id");

  //............
  $.ajax({
    url: getFullUrl(myIdElement.val())
  })
  //..........
})(jQuery);