Jquery ui 为什么我的对话框第一次在屏幕上显示得更低,之后每次都显示得更高?
我正在构建一个MVC4应用程序,在一个表中有许多单元格,用户将单击这些单元格以获取有关该单元格内容的其他数据,因此我弹出了一个模式jQuery对话框。我并没有声称这样做是正确的,但我有一个Ajax表单,它只包含一个隐藏字段,用于将单击的单元格内容的id发送给控制器Jquery ui 为什么我的对话框第一次在屏幕上显示得更低,之后每次都显示得更高?,jquery-ui,asp.net-mvc-4,modal-dialog,Jquery Ui,Asp.net Mvc 4,Modal Dialog,我正在构建一个MVC4应用程序,在一个表中有许多单元格,用户将单击这些单元格以获取有关该单元格内容的其他数据,因此我弹出了一个模式jQuery对话框。我并没有声称这样做是正确的,但我有一个Ajax表单,它只包含一个隐藏字段,用于将单击的单元格内容的id发送给控制器 @Html.Hidden("selectedStatusId") 然后单击,我获取id并将其放入隐藏: $(".statusCell").click(function () { var statusId = this.id;
@Html.Hidden("selectedStatusId")
然后单击,我获取id并将其放入隐藏:
$(".statusCell").click(function () {
var statusId = this.id;
document.getElementById("getStatusDataForm").selectedStatusId.value = statusId;
$("#getStatusDataForm").submit();
$("#StatusData").dialog("open");
});
最后一行的下一行是提交表单,该表单将部分返回到空div:
<div id="StatusData" title="Status Details" class="selectedStatusDetail" style="display: none"></div>
然后配置对话框:
$(function () {
$("#StatusData").dialog({
autoOpen: false,
modal: true,
resizable: false,
draggable: true,
width: 800,
show: {
effect: "fade",
duration: 100
},
hide: {
effect: "fade",
duration: 100
},
create: function (event, ui) {
// Center the dialog each time it re-opens
$(this).dialog('widget')
.css({ position: 'fixed' })
.position({ my: 'center', at: 'center', of: window, collision: 'fit' });
},
open: function (event, ui) {
// Remove the closing 'x' from the toolbar and replace it with the text 'Close'
$('.ui-dialog-titlebar-close')
.removeClass("ui-dialog-titlebar-close")
.html('<span style="float:right; margin-right: 10px; font-weight: normal;">Close</span>');
},
});
$(函数(){
$(“#状态数据”)。对话框({
自动打开:错误,
莫代尔:是的,
可调整大小:false,
真的,
宽度:800,
展示:{
效果:“褪色”,
持续时间:100
},
隐藏:{
效果:“褪色”,
持续时间:100
},
创建:函数(事件、用户界面){
//每次重新打开对话框时,将其居中
$(this.dialog('widget'))
.css({position:'fixed'})
.位置({my:'center',at:'center',of:window,collision:'fit'});
},
打开:功能(事件、用户界面){
//从工具栏中删除关闭“x”,并将其替换为文本“Close”
$(“.ui对话框标题栏关闭”)
.removeClass(“ui对话框标题栏关闭”)
.html(“关闭”);
},
});
因此,我第一次点击其中一个单元格时,对话框会在下方显示107px,从那时起每次都会显示。除此之外,它工作得非常好。
我已经读过关于在加载对话框之前您不想显示的内容,我怀疑可能会发生这种情况,因为对db的调用是异步的,并且我在知道返回数据之前创建了对话框。但这是我能够让其余所有工作正常进行的唯一方法。
我需要重构整个混乱局面还是有修复方法?你能发布ajax函数还是用小提琴重新创建它?我认为你的思路是正确的,如果是这样,最简单的解决方案是将你通过ajax添加的内容以div-width-fixed维度进行包装。我没有想到这一点。问题是我不知道返回内容的大小数据,我不希望一个过大的对话框或滚动,如果我可以帮助它。