Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery移动对话框赢得';ajax调用后无法关闭_Jquery_Ajax_Mobile_Dialog - Fatal编程技术网

jQuery移动对话框赢得';ajax调用后无法关闭

jQuery移动对话框赢得';ajax调用后无法关闭,jquery,ajax,mobile,dialog,Jquery,Ajax,Mobile,Dialog,我有一个简单的JQM(v1.1.0)列表视图,列表中的每个项目都附带了一个ajax调用。当用户点击其中一个列表项时,对话框后面的页面将使用他们点击的项进行更新 问题在于,当用户点击列表项时,对话框不会关闭。如果使用对话框标题中的(X)关闭按钮,对话框将关闭,对话框后面的页面已按预期更新 这是我的密码: $('body').on('tap', 'a.element', function(event) { //START LOADING ANIMATION $.mobile.showPageLoa

我有一个简单的JQM(v1.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();

});
在此提前感谢您的帮助

您需要调用
$().dialog('close')在您的
结果=='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'
);

实际上,您没有告诉对话框关闭代码中的任何地方,这就是为什么它没有关闭。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'
);

如果一个页面上有多个对话框,则此
bpm.closest('.ui dialog').dialog('close')可能会导致问题。他将事件直接绑定到位于对话框上的一组控件。因此,
item.closest('.ui dialog')
调用将找到这些项所在的父对话框。这不会导致任何问题,除非事件是针对对话框中对话框中的项目触发的——即使如此,它也会简单地关闭这两个项目的最内部部分(可能是所需的功能)。@TroyAlford感谢您的快速响应!使用jquerymobile,您可以假设对话框将通过点击列表项来关闭。这已经在我的8台测试设备中的6台和桌面Chrome上运行。您的思路是正确的,但Bot的解决方案解决了这两台出现问题的设备的问题。我喜欢他的解决方案,因为我可以直接关闭目标对话框。我正在DOM中使用2个对话框。啊,很好。:)很高兴知道!很高兴你找到了答案。谢谢这个解决方案。我在iPhone3GS和iTouch 4上遇到了问题,您的解决方案帮助我解决了这个问题。我最初尝试了
$('.ui dialog').dialog('close')
bpm.dataStorage.trigger('create')之后,但这不起作用。瞄准元素直接解决了它!