我有一个页面,我点击按钮加载对话框:
function editShowSchedule(emId){
$(".ui-dialog-content").dialog("close");
var url = "inc/ajax/schedule-editShowSchedule.php?emId="+emId+"&stationId="+<?php echo $stationId;?>;
var container = '<div id="somediv" title="Modifier l\'horaire d\'une émission"></div>';
$(container).load(url).dialog({
//modal:false,
height: 600,
width: 600,
resizable: false,
buttons: { "Annuler": function() { $(this).dialog("close"); },
"Sauvegarder": function(){ saveShowSchedule();} }
});
}
然后,在该对话框中,我在下拉框中触发.change()以加载相对于所选元素的信息。
<?php
$emId = $_POST['emId'];
$stationId = $_POST['stationId'];
?>
[...]
$(document).ready(function() {
$("#selectShow").unbind('change');
$("#selectShow").change(function(){
$("#showTimelines").html('En chargement');
var emId = $("#selectShow").val();
var stationId = <?php echo $stationId;?>;
var params = {emId:emId,
stationId:stationId}
$.post('inc/ajax/schedule-getAllTimelinesByEmId.php',params, function(data){
alert('getTimelineByEmId');
$("#showTimelines").html(data);
$(".button, button, input:submit, input:button").button();
enableAddRecurrenceInPeriod();
enableRecurrenceCloseBox();
},"html"
);
})<?php if($emId > 0){?>.change()<?php }?>;
});
第一次,它运作正常。
但是,如果我关闭对话框并且只是再次打开它,那么警报实际上有效,但我看不到$(“#showTimelines”)。html(甚至没有加载消息:$(“ #showTimelines“)。html('En chargement');),即使我在firefox中看到它并且我只在文档加载后才发帖...
有人知道为什么和/或如何解决这个问题?
答案 0 :(得分:0)
如果你拆分这两个步骤它应该有效:创建对话框一次(例如,在文档就绪),只需单击按钮调用'open'(你仍然可以正常更新对话框的内部html) )。
调用$(foo).dialog()将初始化一个对话框实例,并默认自动打开该对话框。 如果您想重复使用对话框,最简单的方法是禁用“自动打开”选项:
$(foo).dialog({ autoOpen: false }) and open it with $(foo).dialog('open'). To close it, use $(foo).dialog('close')
答案 1 :(得分:0)
function editShowSchedule(emId){
$(".ui-dialog-content").dialog("destroy");
$("#somediv").remove();
var url = "inc/ajax/schedule-editShowSchedule.php?emId="+emId+"&stationId="+<?php echo $stationId;?>;
var container = '<div id="somediv" title="Modifier l\'horaire d\'une émission"></div>';
$(container).load(url).dialog({
//modal:false,
height: 600,
width: 600,
resizable: false,
close: function(event, ui){
$(this).dialog("destroy");
$("#somediv").remove();
},
buttons: { "Annuler": function() { $(this).dialog("destroy");
$("#somediv").remove(); },
"Sauvegarder": function(){ saveShowSchedule();} }
});
}
基本上,关闭实际上只是隐藏了对话框。使用destroy现在擦除它,但是它将容器留在原位,虽然是隐藏的(因此更新了那个而不是用我的ajax创建的新对话框),所以我通过调用$(“#somediv”)完全删除它.remove( );
现在,一切正常!