jQuery移动对话框赢得';ajax调用后无法关闭
我有一个简单的JQM(v1.1.0)列表视图,列表中的每个项目都附带了一个ajax调用。当用户点击其中一个列表项时,对话框后面的页面将使用他们点击的项进行更新 问题在于,当用户点击列表项时,对话框不会关闭。如果使用对话框标题中的(X)关闭按钮,对话框将关闭,对话框后面的页面已按预期更新 这是我的密码: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
$('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')之后代码>,但这不起作用。瞄准元素直接解决了它!