Jquery mobile 具有多个文件的jQuery移动站点

Jquery mobile 具有多个文件的jQuery移动站点,jquery-mobile,Jquery Mobile,我正在使用jQuery mobile开发一个对手机友好的网站,但我希望使用多个HTML文件,每个文件都有一个data role=“page”div(而不是一个文件中有多个data role=“page”div,这似乎是标准的),因为这样可以最大限度地重用现有网站。我知道整个数据ajax=“false”的概念,我可以在主页的标记上使用,但这会禁用页面转换效果,这是我们非常喜欢的 我尝试过pageshow、pagebeforeshow、pageinit、document.ready等,但除非我直接进

我正在使用jQuery mobile开发一个对手机友好的网站,但我希望使用多个HTML文件,每个文件都有一个data role=“page”div(而不是一个文件中有多个data role=“page”div,这似乎是标准的),因为这样可以最大限度地重用现有网站。我知道整个数据ajax=“false”的概念,我可以在主页的
标记上使用,但这会禁用页面转换效果,这是我们非常喜欢的

我尝试过pageshow、pagebeforeshow、pageinit、document.ready等,但除非我直接进入该页面,否则这些都不会触发,而不是跟随主页的链接,即TOC(或在跟随TOC的链接后刷新页面)。基本上,我的JS文件看起来像:

('div[data role=“page”]:first').live('pageshow',function(){/*do custom stuff here*/})

我还尝试将对这个JS文件的引用添加到TOC页面上,但没有成功。。。我有点期待,但我想我会试试。我发现很难相信JQM根本不支持这样做(不失去转换效果),所以我可能错过了一些简单的东西

  • .live()
    已折旧,因此请使用
    .delegate()
  • 您应该绑定到ID,而不是使用多个伪选择器(我认为这是您的问题,您的复杂选择器可能对事件委派无效):
  • 如果要绑定到所有伪页面以全局执行某些操作,可以使用:

    $(document).delegate('[data-role="page"]', 'pageinit', function () {
        //you can now do work for all the `[data-role="page"]` "pages"
    });
    

    或者您可以将类放在不同的
    data role=“page”
    元素上,以指定要绑定到哪个元素。

    您使用的是什么版本的Jquery和Jquery Mobile?提交后,当我重新阅读我的问题时,我很快就想到了,然后我尝试了一下,确认了我的怀疑。。。问题是我的选择器。。。div[data role=“page”]:如果我正在跟踪来自TOC的链接,则首先选择TOC页面的第一个页面div。所以我开始在我的div上使用id。。。反正我应该一直这么做。。。它开始工作了!我很高兴你知道了。贾斯珀的回答很重要。live存在一些已知的问题。而且我们的工作做得更好。如果您使用Jquery 1.7.x时使用了.on()方法而不是live。当我在提交后重新阅读我的问题时,它很快就击中了我,然后我尝试了它并证实了我的怀疑。。。问题是我的选择器
    div[data role=“page”]:如果我正在跟踪来自TOC的链接,则first
    选择TOC页面的第一个页面div。所以我开始在我的div上使用id。。。反正我应该一直这么做。。。它开始工作了!我猜这正是你说的,呵呵,所以我把这个标记为一个答案(在我兴奋的时候,我没有看完这里所有的帖子)。。。虽然现在我遇到了一个新问题,它只适用于从TOC加载的第一个页面,每个单独的文件都有“下一个”和“上一个”导航按钮,当我使用这些按钮时,我遇到了类似的问题,知道为什么吗?但是如果我从TOC转到一个页面,然后单击该页面的TOC,然后从那里转到下一个页面,这很好。。。
    $(document).delegate('[data-role="page"]', 'pageinit', function () {
        //you can now do work for all the `[data-role="page"]` "pages"
    });