このシナリオでは、jqueryのdatepicker機能が失われました...
1-元々、私は通常のビューを持っていましたが、これは正常に機能し、日付入力用のこのコードを持っていました...
<input type="text" name="date_start" id="date_start"
value="@(Model.TimeStart)" />
<script language="javascript" type="text/javascript">
$("#date_start").datepicker();
</script>
2-次に、動的にロードされる部分ビューにそのビューを変換しました...
$('#TargetEmptyDiv').load("/MyController/MyAction");
3-部分ビューは正常にロードされます。データは(手動で)入力でき、すべて問題ありません。唯一の問題は、jquerydatepickerが機能しなくなったことです。これを使って、ロード後に割り当ててみました...
$('#TargetEmptyDiv').load("/MyController/MyAction",
function () { $("#date_start").datepicker(); });
それはうまくいきませんでした。
4-後で、jqueryが「現在および将来」ロードされる要素にjavascriptコードをアタッチできるlive()およびdelegate()関数を提供することを学びました。だから、私はこれをドキュメントの初期化で試しました...
<script type="text/javascript">
$(document).ready(function () {
$("#date_start").live("click", function () { $(this).datepicker(); });
});
</script>
そして後でまた...
<script type="text/javascript">
$(document).ready(function () {
$("#date_start").delegate("click", function () { $(this).datepicker(); });
});
</script>
「クリック」イベントを直接参照しているためか、いずれも機能しませんでしたが、日付ピッカーは要素全体に「アタッチ」されています(これが適切な用語である場合)。
したがって、質問は次のとおりです。動的ロード後にロードされた要素でjquery datepickerを機能させる方法は?
御時間ありがとうございます!
解決済み:問題は、_Layout.cshtmlの下部にこの行があることでした...
@Scripts.Render("~/bundles/jquery")
..jqueryライブラリの縮小バージョンをロードします(すでに自分で参照しています)。そのため、ライブラリが2回ロードされて無効になり、「datepicker()は関数ではありません」というエラーが発生しました。
その行にコメントまたは削除するだけで、すべて正常に機能します。