MVC usercontroll のコンテンツをロードするために JQuery を使用しています。
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>
問題は、アラートが「テスト」ではなく「未定義」を返すことです。つまり、HTML が挿入される前に JS が実行されます。これを回避するにはどうすればよいですか?
-- 以下の投稿の解決策はコールバック関数です。ここに作業コードがあります --
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>