jquery移动的-将内容加载到div

dhxwm5r4  于 2022-12-26  发布在  jQuery
关注(0)|答案(4)|浏览(329)

Jquery移动的的工作原理是“劫持”一个页面,加载内容并将其注入页面。
当我尝试向页面中注入其他内容时,这似乎会产生一个问题。
我有index.html和page2.html文件,我用常规方式设置jquery移动的,将每个页面的内容 Package 在一个div中,如下所示:

<div id="container" data-role="page">
   // my content
<a href="page2.html">go to page 2</a>
</div>

当用户点击go to page 2时,它会产生很好的幻灯片效果。2地址栏中的url看起来是这样的:index.html#page2.html
jquery移动的使用锚点注入页面的内容并应用转换。很好,所以到下一部分一切都很好。
在page2.html中,我有一个部分正在加载一些外部数据并将其注入到div中。

<a href="http://www.somedomain.com/myata.php" class="ajaxtrigger" data-role="none">mydata</a>
<div id="target"></div>
<script src="js/code.js"></script>
<script src="js/loader.js"></script>
<script type="text/javascript">
$(document).ready(function(){
     $('.ajaxtrigger').trigger('click');
});
</script>

我遇到的问题是,当我在jquery移动的中启用转换时,这个脚本不起作用,它不会将数据加载到div.bummer中。
有人知道我需要做什么来触发它并将内容加载到那个div中吗?

jhdbpxl9

jhdbpxl91#

您是否尝试使用$(document).ready(function(){ $('.ajaxtrigger').trigger('click'); });来捕获对index.html中的page 2的单击/点击,然后将数据插入page2.html?
如果是这样的话,那就不起作用了,因为你不能用这种方式在页面之间传递数据。试着给page2.html的主div一个id #page2,然后使用pagebeforeshow方法(http://jquerymobile.com/test/#/test/docs/api/events.html)

$('div#page2').live('pagebeforeshow',function(event, ui){
  $('div#page2 div#ajax_loaded_content').load('url_to_load_from.php');
});
rkkpypqq

rkkpypqq2#

我也有类似的问题(正如上面评论中提到的)而我刚刚想通了(至少对我来说).当jQuery移动的通过 AJAX 加载下一个页面时,它将前一页保留在DOM中,以便后退按钮能够正确工作。现在的问题是,如果您在第二页上使用JavaScript引用任何DOM元素(特别是通过ID),您必须考虑到来自上一页的元素仍然在DOM中,因为ID被设计为唯一的,所以document.getElementById()不那么可靠,所以$("#myDiv")也不可靠。
我刚开始做的是通过类名引用DOM元素(例如$(".myDivClass"))因为css类被设计成不是唯一的,这看起来很有效。副作用是无论你在javascript中做了什么改变,所有隐藏页面都会被修改,但它完成了任务。另一个想法是我在“我键入这个命令是为了给予每个<div data-role="page">一个唯一的ID,并且从现在开始使用$("#myUniquePage #myInnerDiv")而不是$("#myInnerDiv")查询元素。
希望能有所帮助。

eufgjt7s

eufgjt7s3#

试试这个:

$('page2.html').bind('pageshow', function() {
   $('.ajaxtrigger').trigger('click');
});
bq8i3lrv

bq8i3lrv4#

另一种选择是为每次页面加载时要操作的DOM元素生成一个唯一的id,这样就不会出现Adam描述的id重复的问题。我用C#(w/Razor语法)这样做:

@{ string headerAutoGenSym = "header_" + new System.Random().Next(1000000000); }
@section header
{
    <div id="@headerAutoGenSym"></div>

    <script type="text/javascript">
        $(function () {
            $(document).bind("pageinit", function () {
                $.get(
                    '@Url.Action("myAjaxURL")',
                    function (data) {
                        $('#@headerAutoGenSym').append(data);
                    }
                );
            });
        });
    </script>
}

相关问题