jQuery mobile - 获取加载的页面ID?

时间:2013-12-24 12:05:23

标签: javascript jquery jquery-mobile

我有一个名为“info.html”的文档。

它有5页:

  1. 食品
  2. 玩具
  3. 娱乐
  4. 智能手机
  5. 电子
  6. 我想在页面加载后,jquery向服务器发送请求以获取有关此项目的信息。

    我都需要知道如何触发这个功能?

    尝试:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="ISO-8859-1">
            <title>CoCouppn!</title>
            <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.css" />
            <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
            <script src="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.js"></script>
            <script type="text/javascript">
                $(document).on("pageshow", function() {
                    alert($(this).attr('id'));
                });
            </script>
        </head>
        <body>
            <div data-role="page" class="pge" id="food">
                food
            </div>
            <div data-role="page" class="pge" id="toys">
                toys
            </div>
            <div data-role="page" class="pge" id="entertainment">
                entertainment
            </div>
            <div data-role="page" class="pge" id="smartphones">
                smartphones
            </div>
            <div data-role="page" clsas="pge" id="electronics">
                electronics
            </div>
    
        </body>
    </html>
    

    它会警告“未经分类”而不是页面ID。

    有什么问题?

5 个答案:

答案 0 :(得分:8)

请注意,jQuery Mobile 1.4中不推荐使用pageshow:http://api.jquerymobile.com/pageshow/

另请注意,$ .mobile.activePage已弃用。

如果您想获取有效的网页ID,可以执行以下操作:

$.mobile.pageContainer.pagecontainer( 'getActivePage' ).attr( 'id' );

$('body').pagecontainer( 'getActivePage' ).attr( 'id' );

$(':mobile-pagecontainer').pagecontainer( 'getActivePage' ).attr( 'id' );

我个人不推荐后两种,因为你可以自由设置一个不同的页面容器,实际上我在Jasmine测试中这样做。

请注意,页面必须首先处于活动状态(例如,它在pagecreate中尚未激活)。

答案 1 :(得分:3)

  1. pagechange事件并从data对象检索网页的ID。

    $(document).on("pagechange", function (e, data) {
      var page = data.toPage[0].id;
    });
    
      

    <强> Demo

  2. pageshow

    $(document).on("pageshow", function (e, data) {
      var page = $(this)[0].activeElement.id;
    });
    
      

    <强> Demo

答案 2 :(得分:1)

您可以更简洁,更清晰地获取当前页面信息:

$(".ui-page-active").attr("id")

这只是此处所示代码的变体:http://demos.jquerymobile.com/1.4.5/toolbar-fixed-persistent/#&ui-state=dialog

答案 3 :(得分:-1)

尝试$(document).ready( function ),$(document).ready允许您仅在加载页面时在jQuery中执行代码。

答案 4 :(得分:-1)

如果您想使用pagecreate事件,请使用this.id

$(document).on(
        "pagecreate",
        '#page_1, #page_2',
        function(event) {

            var pageId = this.id;
            ...
        }

);