无法在其他调用上设置jQuery对话框选项
Impossible to set jQuery dialog option on ulterior calls
让这个jQuery对话框:
$('#myDialog').dialog
({
// …,
buttons:
[
// …,
{
id: "bOK",
click: function () { $(this).dialog("destroy"); }
}
],
open: Do_On_Open (),
// …
});
和一样
function Do_On_Open ()
{
// quite a few things here
Center_Dialog ($('#myDialog') );
// $(window).resize ( function () { $('#myDialog').dialog ( "option", "position", gPosStd); });
}
Center_Dialog函数复制Do_On_Open中注释的下一行,如下所示:
function Center_Dialog ( theDialog )
{
$(window).resize ( function ()
{
theDialog.dialog ( "option", "position", { my: "center top", at: "center-40 top+80", of: window });
});
}
在对对话框的第一次调用中,一切都很好:Center_dialog在调整窗口大小时表现如预期。在其他调用中,Center_Dialog中止,控制台返回jQuery错误:"初始化之前无法调用对话框上的方法;尝试调用方法'option'"。
换句话说,第一个调用保持缓存状态,并且缺少要应用的对象属性,以便成功完成其他调用——同时清除浏览器的缓存使其再次可用(这一次!)。
我做错了什么?
我已经测试了您的代码。我不确定,但我认为,当你关闭对话框时,对话框已经被破坏,所以window.resize无法附加你给出的选项。
我刚刚删除了您的两个函数,并将其直接移到open
方法中。
在这种情况下,没有错误。
open: function() {
$(this).dialog("option", "position", {my: "center top", at: "center-40 top+80", of: window});
}
更新
如果你想移动对话框,当窗口调整大小时,把这个东西放进一个函数中,然后检查你的对话框是否可见:
$.fn.doSomething = function () {
if ($(this).is(":visible")) {
$(this).dialog("option", "position", {my: "center top", at: "center-40 top+80", of: window});
}
};
$(window).resize(function () {
$('#myDialog').doSomething();
});
在open方法中调用此函数:
open: function () {
$(this).doSomething();
}
关键是要检查,你的对话框是否可见。
相关文章:
- 需要垫片设置-jquery.flot/jquery.flot.selection
- 是否可以在调用时动态设置Jquery Accordion的活动面板
- 无法在其他调用上设置jQuery对话框选项
- 如何在jquery ajax响应后设置jquery滑块的起始值
- 如何设置jQuery微调器的最大值和最小值
- 设置jquery按钮,而不是php错误和成功状态
- 设置jquery对话框的高度
- 如何动态设置jquery mobile'的minHour选项;s的日期框
- 如何正确设置jQuery日历小部件的区域设置
- 如何设置jQuery函数的动画's循环中的变量
- 设置 Jquery 对话框标题栏样式
- 如何使用JQuery.Load访问Div中加载URL的UL“id”,“name”等,以设置JQuery树视图
- 如何在页面加载时设置 jquery 切换关闭
- 根据 HTML 表单 ID 值动态设置 jquery 选择器
- 在 jquery 表单序列化变量中设置 jquery 延迟
- 设置 jQuery 动画的队列长度
- 从 html 数据设置 jquery 延迟
- 设置JQuery动画中的超时
- 根据 C# 值设置 jQuery cookie 的值
- 无法设置 jquery 对话框.InnerHtml(某些内容)无需刷新页面