如果从ajax加载的页面调用,则jquery mobile changePage无法正常工作

时间:2014-05-26 07:48:43

标签: jquery-mobile

情况:
form1.html有一个按钮
点击该按钮会调用 $ .mobile.changePage(' ../ site3 / form2.html');
这里没问题。 all按预期方式加载页面。让我们称之为form2.html

form2.html有2个部分:
(1)#SiteForm和
(2)#SiteSearched

点击#SiteForm上的按钮应拨打 $。mobile.changePage(' ../ site3 / form2.html#SiteSearched');

现在这里是奇怪的部分。 如果我直接加载页面form2.html并按下按钮,它会工作,我会看到#SiteSearched JQM页面。

但是,如果我从form1.html开始,单击按钮进入form2.html#SiteForm,然后单击按钮,附加函数中的所有内容都会执行,但调用 $ .mobile.changePage(&#39)的行除外; ../ site3 / form2.html#SiteSearched');

我知道这部分是由AJAX加载的,因为changePage命令不起作用吗?

(注意:Form1可能会将数据填入我不想丢失的表单中.Form2.html的目的是进行搜索并以某种方式将结果扔回Form1,这就是我做事的原因这样。)

1 个答案:

答案 0 :(得分:1)

你应该先阅读官方jQuery Mobile文档,然后在这里发布,一切都在那里解释,但是让我给你一个简短的解释。

jQuery Mobile有两个模板解决方案,一个是多页面,另一个是多个html。你已经知道了,因为你正在混合它们。但是,你不知道的是(从AJAX页面处理的角度来看):

  • 只有第一个HTML页面完全加载到DOM中,所有内容都被加载,包括HEAD内容。因此,如果初始HTML页面有多个 data-role =" page" < div>容器,每个容器都会加载到DOM中。

  • 但是,每个后续页面仅部分加载。基本上,如果你第二,第三......页面有多个 data-role =" page" div容器,只有第一个将加载到< DOM>。 jQuery Mobile将丢弃其他所有内容。

所以在你的情况下,如果form2.html有:

(1) #SiteForm 和 (2) #SiteSearched

jQuery Mobile仅加载 #SiteForm #SiteSearched 将被丢弃。

基本上这条线不起作用:

$.mobile.changePage('../site3/form2.html#SiteSearched'); 

正如我告诉你的,你不能在后续页面中挑选特定页面。你只能用这个:

$.mobile.changePage('../site3/form2.html'); 

jQuery Mobile将在 form2.html 页面中向您显示第一个 data-role =" page"

详细了解 here here