在document.ready()中工作的jQuery移动代码在document.bind(pageinit,…)中不工作
我正在使用一个名为Client-Side-Validations()的Rails gem,它完全按照它的名字来做。 我注意到它只是在第一次加载页面时才起作用,而不是再次加载,然后我意识到这是因为整个ajax加载过程没有触发ready()事件。所以我将库的相关部分切换为使用pageinit,现在什么也没发生。我收到了警报消息,但验证没有启动 为不再工作的jQM调整的代码在document.ready()中工作的jQuery移动代码在document.bind(pageinit,…)中不工作,jquery,jquery-mobile,Jquery,Jquery Mobile,我正在使用一个名为Client-Side-Validations()的Rails gem,它完全按照它的名字来做。 我注意到它只是在第一次加载页面时才起作用,而不是再次加载,然后我意识到这是因为整个ajax加载过程没有触发ready()事件。所以我将库的相关部分切换为使用pageinit,现在什么也没发生。我收到了警报消息,但验证没有启动 为不再工作的jQM调整的代码 // $(document).bind('pageinit', function() { // alert(1)
// $(document).bind('pageinit', function() {
// alert(1)
// ClientSideValidations.disableValidators();
// return $(ClientSideValidations.selectors.forms).validate();
// });
原始的“工作”代码
除了这段代码之外,我没有更改任何其他内容。请尝试下面的代码并查看
$(document).on('pageshow', function() {
alert(1)
ClientSideValidations.disableValidators();
return $(ClientSideValidations.selectors.forms).validate();
});
如果您希望在第一次加载页面时触发它,请使用pagecreate
,或者如果您希望在每次刷新页面时触发它,请使用pageshow
理想情况下,您可以将其特定于以下页面。假设页面id为testpage
$(document).on('pageshow', '#testpage', function() {
alert(1)
ClientSideValidations.disableValidators();
return $(ClientSideValidations.selectors.forms).validate();
});
如果您坚持使用pageinit
,请尝试以下操作
$( "#testpage" ).on( "pageinit", function( event ) {
alert( "This page was just enhanced by jQuery Mobile!" );
});
当您在pageInit上时,您的网页的组件尚未出现,因此您无法设置验证或尝试查找任何内容。它主要用于设置全局配置、变量和预配置
正如Mayu所说,正确的方法是使用on with pageshow。谢谢!为什么“pageinit”不起作用?据文档所述,它是.ready()的替代品。据我所知,
pageinit
用于设置全局配置细节,如加载程序的主题等。因此,无论何时需要jQM上的“ready”事件,都可以使用“pageshow”?因为ready
和pageshow
的工作方式不同,我不能说我用它来代替它。但我可以说,如果我希望每次在浏览器上加载DOM时都触发事件和事件,那么我会使用pageshow
。
$( "#testpage" ).on( "pageinit", function( event ) {
alert( "This page was just enhanced by jQuery Mobile!" );
});