Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquerymobile:使用';数据rel=";“后退”';具有动态页面生成功能_Jquery_Jquery Mobile_Mobile_Dynamic Pages - Fatal编程技术网

jquerymobile:使用';数据rel=";“后退”';具有动态页面生成功能

jquerymobile:使用';数据rel=";“后退”';具有动态页面生成功能,jquery,jquery-mobile,mobile,dynamic-pages,Jquery,Jquery Mobile,Mobile,Dynamic Pages,我在jquery移动应用程序中向后移动历史堆栈时遇到了一个问题 基本上,我有三页: 搜索表单(具有页面角色的预构建div。受限导航:仅限于结果列表页面) 结果列表(带有页面角色的预构建div,通过ajax添加的结果信息。可导航到任何记录页面) 记录页面(完全动态构建。可无限导航到相关记录页面) 记录页面是根据表和记录id动态创建的,每次选择新记录时,记录id都会附加到文档正文中 var page_id = table + record_id; var pg_html = newPageHTML(

我在jquery移动应用程序中向后移动历史堆栈时遇到了一个问题

基本上,我有三页:

  • 搜索表单(具有页面角色的预构建div。受限导航:仅限于结果列表页面)
  • 结果列表(带有页面角色的预构建div,通过ajax添加的结果信息。可导航到任何记录页面)
  • 记录页面(完全动态构建。可无限导航到相关记录页面)
  • 记录页面是根据表和记录id动态创建的,每次选择新记录时,记录id都会附加到文档正文中

    var page_id = table + record_id;
    var pg_html = newPageHTML(page_id );
    $('body').append(pg_html);
    $.mobile.changePage($("#" + page_id));
    
    在前进到一条记录并按下“后退”按钮(data rel=“back”)后,预期的行为将返回到上一页,无论是另一条记录还是结果列表,但我会一直返回到搜索表单。当我使用数据dom cache=“true”时会发生这种情况,而当我不使用数据dom cache=“true”时则会发生这种情况


    有没有解释为什么会这样?感谢您的帮助。

    在DOM中获取上一页的ID,然后移动到它

    $('.selector').on('click', function() {
    
     // get the ID of the previous page
     var previous = '#' + $.mobile.activePage.prev('div[data-role="page"]')[0].id;
    
     // move to previous page with reverse effect
     $.mobile.changePage(previous, {
      transition: 'slide',
      reverse: true
     });
    });
    

    好吧,这是我如何修复它的。虽然我不会选择这个作为答案,因为它与我所希望的工作方式相去甚远,而且看起来非常复杂

    这些问题:

  • 无法将任何页面更改保存到未指向真实.html页面的历史记录。所以在动态页面之间跳转是不可能的
  • 我需要一种方法将数据传递到保留在历史记录中的.html页面,所以我在url中使用了一个序列化字符串,比如GET字符串。类似于这里,但一个不同的,更短,更干净的一个我找不到链接-对不起!()
  • html页面必须是不同的,并且在彼此之间交换,这样页面才能重新加载并触发页面更改事件侦听器
  • 现在html页面已存储,并具有单击“上一步”重新绘制自身所需的所有信息

    #2的代码(不是我的,非常感谢编写它的人):

    #3的代码:


    啊,谢谢你,奥马尔。在过去的一个小时左右,我一直在研究这个问题,并在下面提出了一个复杂的解决方案。谢谢你的回答。我希望我能测试并实现它,但是我对代码做了太多的更改,我甚至不能恢复到原来的问题。谢谢你的例子和帮助。这看起来是一个很好的、简单的、易于实现的解决方案。请检查此项以了解页面之间的参数传递。
    $.urlParam = function(name){
        var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
        return results[1] || 0;
    }
    
    // change page
    if($('.ui-page-active').attr('id') == "record-a"){
        $.mobile.changePage("p-record-b.html?table=" + content_type + "&id=" + record_id);
    }else if($('.ui-page-active').attr('id') == "record-b"){
        $.mobile.changePage("p-record-a.html?table=" + content_type + "&id=" + record_id);
    }else{
        $.mobile.changePage("p-record-a.html?table=" + content_type + "&id=" + record_id);
    }