私のページの 1 つで jQuery UI の datepicker 関数を実行しています。それを取り除くと、次のように機能します。
<form>
<input type="text" name="date" id="date" />
</form>
<script type="text/javascript">
jQuery("#date").datepicker();
</script>
この部分が機能するので、jQuery と jQuery UI スクリプトが正しく含まれていることがわかります。
ここで、次のように、関数の 1 つから日付ピッカーを有効にします。
<form>
<input type="text" name="date" id="date" />
</form>
<a href="JavaScript:test();">test</a>
<script type="text/javascript">
function test() {
alert(jQuery("#date")); // this works as expected
jQuery("#date").datepicker(); // this throws an error
}
</script>
しかし、datepicker 関数が関数内で実行されると、JavaScript はエラーTypeError: 'undefined' is not a function (evaluating 'jQuery("#date").datepicker()')をスローします。jQuery("#date") オブジェクトは使用できますが、関数のスコープ内で datepicker 関数を使用できないようです。
誰かがこれについて説明または回避策を持っていますか?
更新: ragnarok56 がコードの動作を示す jsfiddle を投稿した後、私は自分のページに戻って、何が影響しているのかをより注意深く調べました。これは、管理者が独自のヘッダーとフッター コードを追加してカスタマイズできる大規模なシステムの一部であり、管理者がフッターの古い jQuery スクリプトへの独自のリンクを追加していたことが判明しました。それを削除すると、コードが期待どおりに機能しました。jQueryのインクルードも彼のものに置き換えましたが、コードはまだ機能していたので、問題は古いバージョンのjQueryではなく、jQueryを2回組み込んでいるようです。これにより、jQuery 関数が関数内で機能し、関数外では機能しなくなるのは奇妙に思えます。そのため、誰かがその動作の説明を提供できる場合に備えて、これを開いたままにします。