jquery mobile - 每页的加载功能

时间:2014-02-21 23:55:44

标签: jquery jquery-mobile

我正在使用一个功能来打开面板。但是,我发现这与#index页面具体相关。有没有办法设置它,所以它链接到我的网站中的所有页面。在阅读各种帖子后,我尝试以几种不同的方式添加data-role = page,但无济于事。

/*Open panel on page load */
$(document).on('pageshow', '#index', function(){       
    $( "#menupanel" ).panel( "open");
})

尝试

$(document).delegate('[data-role="page"]', 'pageshow', function () {...

我认为从http://demos.jquerymobile.com/1.4.1/panel-swipe-open/#&ui-state=dialog

复制代码后我也会遇到同样的问题
$( document ).on( "pagecreate", "#index", function() {
    $( document ).on( "swipeleft swiperight", "#index", function( e ) {
        // We check if there is no open panel on the page because otherwise
        // a swipe to close the left panel would also open the right panel (and v.v.).
        // We do this by checking the data that the framework stores on the page element (panel: open).
        if ( $( ".ui-page-active" ).jqmData( "panel" ) !== "open" ) {
            if ( e.type === "swipeleft" ) {
                $( "#right-panel" ).panel( "open" );
            } else if ( e.type === "swiperight" ) {
                $( "#left-panel" ).panel( "open" );
            }
        }
    });
});

1 个答案:

答案 0 :(得分:0)

它被绑定到索引页面,因为您正在指定它。只需将其删除并绑定到" global" pageshow。现在,每次pageshow事件触发文档中的任何位置时,您的面板都将打开。

/*Open panel on page show*/
$(document).on('pageshow',function(){       
    $( "#menupanel" ).panel( "open");
});

此代码:

$( document ).on( "pagecreate", "#index", ...

...绑定到主索引页面的create事件,它在pageshow之前触发,事实上,如果在JQM初始化页面之前触发了。此示例是添加用于打开面板的滑动功能。

你想要吗?

此外,只有一个FYI .delegate()已被jQuery中的.on()替换:

  

从jQuery 1.7开始,.delegate()已被.on()方法取代。但是,对于早期版本,它仍然是使用事件委派的最有效方法。