我有一个jquery ui对话框,里面有另外一个
在打开里面的那个之前,我打电话给$.get
来接收它的html
如果我打开第一个对话框并关闭它然后再次打开它并尝试打开从$ .get收到的html里面的对话框没有设置
<小时/> 第1页
<script type="text/javascript">
$(function() {
$("#bidialog").dialog({
resizable: true,
height: 500,
width: 700,
modal: true,
autoOpen: false,
buttons: { 'Anuleaza': function() { $(this).dialog('close'); } }
});
});
function openit() {
$.get('<%=Url.Action("Index", "Bank") %>', function(data) { $("#bidialog").html(data); })
$("#bidialog").dialog('open');
}
$(function() { $("#bopen").click(openit); });
</script>
<div id="bidialog" title="the dialog">
first content
</div>
<button id="bopen">
openit</button>
<小时/> 第2页
<script type="text/javascript">
$(function() {
$("#bcdialog").dialog({
resizable: true,
height: 400,
width: 600,
modal: true,
autoOpen: false,
buttons: { 'Anuleaza': function() { $(this).dialog('close'); } }
});
});
$(function() {
$("#create").click(createBank);
});
function createBank() {
$.get('<%=Url.Action("Create", "Bank") %>', function(data) { $("#bcdialog").html(data); })
$('#bcdialog').dialog('open');
}
</script>
<div id="bcdialog" style="display:none;" title="create bank">
first content
</div>
<button class="ui-state-default ui-corner-all" id="create">
<span class="ui-icon ui-icon-circle-plus fl"></span>Adauga</button>
答案 0 :(得分:1)
如果在文档就绪时加载了page2 - 在第一次获取期间:'&lt;%= Url.Action(“Index”,“Bank”)%&gt;' - 通过ajax,然后第2页的document.ready方法永远不会被调用(因为文档已经准备好了)。
FYI - 将函数传递给jQuery $(function(){});与$(document).ready(function(){});
相同要使代码执行,只需删除jQuery包装器,因为代码将在通过ajax调用加载到dom中时执行。
如果需要封装,可以将整个事物包装在匿名函数中:
(function () { $("#bcdialog").dialog({ resizable: true, height: 400, width: 600, modal: true, autoOpen: false, buttons: { 'Anuleaza': function() { $(this).dialog('close'); } } }); $("#create").click(createBank); function createBank() { $.get('', function(data) { $("#bcdialog").html(data); }) $('#bcdialog').dialog('open'); } });
此外,不确定这里的大图,但你可能想要考虑使用'live'jQuery事件,因为它们松散地绑定到选择器,即使元素被删除然后再添加回dom,它也会工作。
$("#create").live("click" createBank);