1

我有一个简单的 JQM (V 1.1.0) 列表视图,列表中的每个项目都附加了一个 ajax 调用。当用户点击其中一个列表项时,对话框后面的页面会更新为他们点击的项目。

问题是当用户点击列表项时对话框不会关闭。如果我使用对话框标题中的 (X) 关闭按钮,对话框将关闭,并且对话框后面的页面已按预期更新。

这是我的代码:

$('body').on('tap', 'a.element', function(event) {

//START LOADING ANIMATION
$.mobile.showPageLoadingMsg();

//GET URL FROM MARKUP
bpm.url = $(this).attr('href');

$.get(bpm.url, 
    function(data, result) {
        if(result == 'success') {

            //STOP LOADING ANIMATION
            $.mobile.hidePageLoadingMsg();

            bpm.dataStorage = $(bpm.remoteAppDivName).html(data);


            bpm.dataStorage.trigger('create');


        }    
    },
    'html'
);

//PREVENT DEFAULT BUTTON BEHAVIOR
event.preventDefault();

});

提前感谢您对此的任何帮助!

4

2 回答 2

1

你需要$(<dialog element>).dialog('close');在你的result == 'success'.

$.get(bpm.url, 
    function(data, result) {
        if(result == 'success') {

            //STOP LOADING ANIMATION
            $.mobile.hidePageLoadingMsg();

            bpm.dataStorage = $(bpm.remoteAppDivName).html(data);


            bpm.dataStorage.trigger('create');

            $('#dialogBox').dialog('close');
        }    
    },
    'html'
);
于 2012-11-05T20:02:23.153 回答
1

您实际上并没有告诉对话框在代码中的任何位置关闭,这就是为什么它不是。jQuery 不能假设仅仅因为您以某种方式与对话框交互,就希望它关闭...

尝试类似:

$.get(bpm.url, 
    function(data, result) {
        if(result == 'success') {

            //STOP LOADING ANIMATION
            $.mobile.hidePageLoadingMsg();

            bpm.dataStorage = $(bpm.remoteAppDivName).html(data);
            bpm.dataStorage.trigger('create');

            bpm.closest('.ui-dialog').dialog('close');
        }    
    },
    'html'
);
于 2012-11-05T20:04:10.940 回答