我正在使用 JQuery 加载 MVC 用户控件的内容:
function menuShowModal(a) {
$.ajax(
{
url: a.href,
success: function (result) {
$('#modalDialog').dialog('close');
var $dialog = $('<div id=\'modalDialog\'></div>')
.html(result)
.dialog({
autoOpen: true,
title: 'Basic Dialog',
modal: true
});
},
cache: false,
type: 'get'
});
return false;
}
返回的 HTML 如下所示:
<input type="text" id="navnet" value="test" />
<script type="text/javascript">
$(document).ready(
function () {
alert($("#navnet").val());
}
)
</script>
问题是警报返回“未定义”而不是“测试”,换句话说,JS 在插入 html 之前执行,我该如何解决这个问题?
-- 下面帖子的解决方案是一个回调函数,这是工作代码 --
function menuShowModal(a) {
$.ajax(
{
url: a.href,
success: function (result) {
onDialogBoxShown = null;
$('#modalDialog').dialog('close').remove();
var $dialog = $('<div id=\'modalDialog\'></div>')
.html(result)
.dialog({
autoOpen: true,
title: 'Basic Dialog',
modal: true
});
if (onDialogBoxShown != null) onDialogBoxShown();
},
cache: false,
type: 'get'
});
return false;
}
<input type="text" id="navnet" value="test" />
<script type="text/javascript">
var onDialogBoxShown = function () { alert($("#navnet").val()); }
</script>