我想通过在按钮和内容div上使用相同的类来打开多个对话框。以下工作但仅限第一次。
jQuery('.helpDialog').hide();
jQuery('.helpButton').click(function() {
jQuery(this).next('.helpDialog').dialog({
autoOpen: true,
title: 'Help',
width: 500,
height: 300,
position: [180,10],
draggable: true,
resizable: false,
modal: false
});
return false;
});
我们知道原因 http://blog.nemikor.com/2009/04/08/basic-usage-of-the-jquery-ui-dialog/ “第二个调用被忽略,因为对话框已经在该元素上实例化了。”
但是当我通过尝试下面的代码解决该问题时,对话框不再打开。 有人可以帮忙吗? 提前致谢
jQuery('.helpDialog').hide();
jQuery(function() {
jQuery('.helpDialog').dialog({
autoOpen: false,
modal: true,
title: 'Info',
width: 600,
height: 400,
position: [200,0],
draggable: false
});
});
jQuery('.helpButton').click(function() {
jQuery(this).next('.helpDialog').dialog('open');
return false;
});
答案 0 :(得分:21)
你实际上需要一种不同的方法,一种非直观的方法,如下所示:
jQuery(function($) {
$('.helpButton').each(function() {
$.data(this, 'dialog',
$(this).next('.helpDialog').dialog({
autoOpen: false,
modal: true,
title: 'Info',
width: 600,
height: 400,
position: [200,0],
draggable: false
})
);
}).click(function() {
$.data(this, 'dialog').dialog('open');
return false;
});
});
为什么必须这样做?因为.dialog()
将包含在对话框元素中的内容移动到<body>
的末尾,所以.next()
将不再找到它...通过使用jQuery.data()
我们维护对我们想要打开的对话框的引用。
答案 1 :(得分:2)
也许这段代码可以帮到你。
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link rel="stylesheet" href="Styles/ui-lightness/jquery-ui-1.7.2.custom.css" />
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#opener1").click(function () {
$("<div id='dialog1' />").dialog(
{
title: 'Basic modal dialog1',
autoOpen: false,
width: 600,
height: 400,
open: function (event, ui) {
}
});
$("#dialog1").dialog('open').show();
return false;
});
$("#opener2").click(function () {
$("<div id='dialog2' />").dialog(
{
title: 'Basic modal dialog2',
autoOpen: false,
width: 600,
height: 400,
open: function (event, ui) {
}
});
$("#dialog2").dialog('open').show();
return false;
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<button id="opener1">open the dialog1</button>
<button id="opener2">open the dialog2</button>
</form>
</body>
</html>