$(document).ready中的元素在某种情况下是未定义的
这个问题来自
实际上,我能找到一条线索,这就是我找到的。 我有一个js文件:
$(document).ready(function() { var myIdElement = $("#some_id"); //............ $.ajax({ url: getFullUrl(myIdElement.val()) }) //..........
所以当我通过链接(html链接)从另一个页面来到这个页面时, myIdElement
是undefined
。 但是,当我重新加载页面时,它开始具有适当的值。 我使用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);