1

我有一个对话框出现在 jQuery Mobile 应用程序的“内部”页面上(即:您从主页导航到的页面)。导航是通过 AJAX 完成的,因此data-role="page"会加载一个 div 并对其进行动画处理。

问题是,如果我通过标准方式请求内页,则当我通过 请求它$.mobile.changePage时会出现对话框,但是当通过 AJAX 请求时,对话框根本不会出现。

它位于正确的位置,作为元素的兄弟(不是子data-role="page"元素),我尝试将它包含在各种不同的位置,但是当通过 AJAX 请求页面时它根本不会加载。

有任何想法吗?这是打开对话框的代码:

$('a[data-action="audio"]').on('click',
    function(e) {
        e.preventDefault();
        $.mobile.changePage('#recording',
            {
                transition: 'pop',
                changeHash: false,
                role: 'dialog'
            }
        );
    }
);

div[data-role="dialog"]是通过 AJAX 请求加载的 HTML 文件的一部分。我也尝试过dialog()自然什么都不做的神话功能:)

有任何想法吗?

4

1 回答 1

1

虽然我不是 100% 确定没有看到更多代码,但我相信你.on的绑定不正确。我认为您.on当前绑定到一个使用 ajax 更改/加载的元素。

请用这个测试:

 $(body).on('click', 'a[data-action="audio"]',

如果这可行,那么您应该更改body为没有 ajax 的元素。

于 2013-10-21T10:28:18.517 回答