0

我在 jQuery Mobile 1.3 中工作,我找不到适合这种情况的事件。

我有一个<div>包含动态内容的#show_protocol。如果浏览器在此页面保持打开状态,然后刷新,则不会显示任何内容(因为填充它的表单提交尚未发生)。

所以,我想绑定一个事件,检查它是否是这个特定的页面角色<div>,如果是,则执行一些代码。我尝试绑定到pageshow, pagebeforeload, pageinit,但似乎没有一个在页面加载时起作用。当通过使用应用程序触发事件时代码会触发,但不会在第一页加载时触发。

这是我尝试过的:

$("#show_protocol").on( "pageshow", function(){ // swap in pageinit, pagebeforeload, etc.
    if ( $(this).hasClass("preload") ) {
        [..]
    } else {
        [..]
    }
});

也试过:

$(document).on( "hashchange", function(){ 

正如@Sudhir 指出的那样:

$(document).on( "pageshow", "#show_protocol", function(){ 

这些都不起作用。我不确定 JQM 在浏览器首次加载时会触发哪些事件?

我的 HTML 是基本的,不应该影响功能:

<div data-role="page" id="show_protocol">[..]</div>

4

2 回答 2

1

尝试做:

$(document).on('pageinit', '#show_protocol',  function(){
   //your code here
});

instead of $(document).ready(function() { ... });

采用

$(document).bind('pageinit')

参考:: jQuery 移动事件

于 2013-09-12T08:12:22.217 回答
0

感谢 Sudhir 的.bind()建议,我能够像这样实现:

 $(document).bind('pageinit', function( e ){ 
    var $id = $( e.target ).attr( "id" );
    if ( $id == 'show_protocol' ){ // check which page is loading
        if ( !$("body").hasClass("preload") ) { // check if already loaded
            $.mobile.changePage( "#protocols" ) // redirect
        }
    }
    $("body").addClass("preload");
 });
于 2013-09-12T08:38:19.977 回答