私のメインビュー:
@Ajax.ActionLink("append smth", "AddSmth", new AjaxOptions { UpdateTargetId = "smthContainer", InsertionMode.InsertAfter })
<div id="smthContainer"></div>
私のコントローラー:
public ActionResult AddSmth()
{
return PartialView("Smth");
}
部分的なビュー:
<input type="text" id="dateOfSmth" />
<script type="text/javascript">
$(document).ready(function () {
$('#dateOfSmth').datepicker();
});
</script>
問題は、部分ビューがドキュメントに追加される前に ready 関数が呼び出されるため、$('#dateOfSmth') が空になることです。InsertionMode.InsertAfter を InsertionMode.Replace に置き換えると、すべて正常に動作します。InsertionMode.InsertAfter で正しく起動しない理由がわかりましたか?
EDIT:jQueryでビューを追加するときにうまく機能します:
<a href="javascript:addSmth();"> Add Smth </a>
<script type="text/javascript">
function addSmth() {
$.get('@Html.Raw(Url.Action("AddSmth"))', null, function (view) {
$('#smthContainer').append(view);
});
}
</script>