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

这个问题来自

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

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

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

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

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