Javascript 全局jQuery对话框变量工作不正常
当我调用该函数时,对话框不起作用。 如果我将对话框结构移动到showtimes_list函数中,一切正常 我认为在函数外声明的变量在上下文中是全局的Javascript 全局jQuery对话框变量工作不正常,javascript,jquery-ui,global-variables,jquery-ui-dialog,Javascript,Jquery Ui,Global Variables,Jquery Ui Dialog,当我调用该函数时,对话框不起作用。 如果我将对话框结构移动到showtimes_list函数中,一切正常 我认为在函数外声明的变量在上下文中是全局的 var dialog_list = $("<div></div>").dialog({ autoOpen: false, modal: true, height: 300, width: 720, }); function showtimes_list(sid){ dialog_list.h
var dialog_list = $("<div></div>").dialog({
autoOpen: false,
modal: true,
height: 300, width: 720,
});
function showtimes_list(sid){
dialog_list.html("");
$.get("ajax_showtimes.php?sid="+sid, function(data){
dialog_list.html(data);
}
);
dialog_list.dialog("open");
}
var dialog\u list=$(“”)。dialog({
自动打开:错误,
莫代尔:是的,
高度:300,宽度:720,
});
函数showtimes\u列表(sid){
dialog_list.html(“”);
$.get(“ajax\u showtimes.php?sid=“+sid,函数(数据){
dialog_list.html(数据);
}
);
对话框列表。对话框(“打开”);
}
---编辑---
这是从onClick到showtimes\u列表调用的
---编辑---
这是有效的:
function showtimes_list(sid){
$("#stl").dialog("open");
$("#stl").html("");
$.get("ajax_showtimes.php?sid="+sid, function(data){
$("#stl").html(data);
}
);
}
$(function(){
$('<div id="stl"></div>').appendTo(document.body).dialog({
autoOpen: false,
modal: true,
height: 300, width: 720,
});
});
函数showtimes\u列表(sid){
$(“stl”)对话框(“打开”);
$(“#stl”).html(“”);
$.get(“ajax\u showtimes.php?sid=“+sid,函数(数据){
$(“#stl”).html(数据);
}
);
}
$(函数(){
$(“”).appendTo(document.body).dialog({
自动打开:错误,
莫代尔:是的,
高度:300,宽度:720,
});
});
不要创建新的空div,而是将div添加到文档中,例如:
<body>
<div id="dialog">
<div id="dialogContent"></div>
</div>
</body>
然后,如果要更改该元素的HTML,而不是更改对话框本身,则需要更改dialogContent元素:
function showtimes_list(sid){
var content = $("#dialogContent");
content.html("");
$.get("ajax_showtimes.php?sid="+sid, function(data){
content.html(data);
}
);
dialog_list.dialog("open");
}
如果您不想在HTML结构中使用这些空div,那么应该动态地将它们添加到正文中,并使用类而不是ID
编辑:为了回答您的问题,即当对话框列表在函数之外时,它为什么不工作,我想它与生成的html有关
调用.dialog()时,jQuery生成以下HTML:
<div class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable ui-resizable">
<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
<span id="ui-dialog-title-dialog" class="ui-dialog-title">Dialog title</span>
<a class="ui-dialog-titlebar-close ui-corner-all" href="#"><span class="ui-icon ui-icon-closethick">close</span></a>
</div>
<div style="height: 200px; min-height: 109px; width: auto;" class="ui-dialog-content ui-widget-content" id="dialog">
<p>Dialog content goes here.</p>
</div>
</div>
将div添加到文档中,而不是创建新的空div,例如:
<body>
<div id="dialog">
<div id="dialogContent"></div>
</div>
</body>
然后,如果要更改该元素的HTML,而不是更改对话框本身,则需要更改dialogContent元素:
function showtimes_list(sid){
var content = $("#dialogContent");
content.html("");
$.get("ajax_showtimes.php?sid="+sid, function(data){
content.html(data);
}
);
dialog_list.dialog("open");
}
如果您不想在HTML结构中使用这些空div,那么应该动态地将它们添加到正文中,并使用类而不是ID
编辑:为了回答您的问题,即当对话框列表在函数之外时,它为什么不工作,我想它与生成的html有关
调用.dialog()时,jQuery生成以下HTML:
<div class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable ui-resizable">
<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
<span id="ui-dialog-title-dialog" class="ui-dialog-title">Dialog title</span>
<a class="ui-dialog-titlebar-close ui-corner-all" href="#"><span class="ui-icon ui-icon-closethick">close</span></a>
</div>
<div style="height: 200px; min-height: 109px; width: auto;" class="ui-dialog-content ui-widget-content" id="dialog">
<p>Dialog content goes here.</p>
</div>
</div>
我很困惑。你能详细说明什么不起作用吗?这还不够。是否在document.ready()函数中调用此函数?或者这只是一个脚本标签?@Pointy打字错误。。很抱歉如果不将变量设置移动到函数中,调用时它将不起作用。是否有关于某种错误的控制台输出,或者尝试使用属性id向html页面添加一个div元素,然后选择该元素作为对话框列表。您确定对话框列表的值在声明位置或单击事件触发时不会被修改吗?有了您编写的代码,
对话框列表
肯定是在showtimes\u列表
中的上下文中。我很困惑。你能详细说明什么不起作用吗?这还不够。是否在document.ready()函数中调用此函数?或者这只是一个脚本标签?@Pointy打字错误。。很抱歉如果不将变量设置移动到函数中,调用时它将不起作用。是否有关于某种错误的控制台输出,或者尝试使用属性id向html页面添加一个div元素,然后选择该元素作为对话框列表。您确定对话框列表的值在声明位置或单击事件触发时不会被修改吗?有了您编写的代码,对话框列表
肯定是在showtimes\u列表
的上下文中。