146

jQueryのUIプラグインであるDatePickerを既存の.aspxページで使用すると、次のようなエラーが発生します。

$("#datepicker").datepicker is not a function

ただし、datePickerを作成して使用するのと同じコードをコピーしてaspxページと同じディレクトリにあるHTMLファイルに貼り付けると、問題なく機能します。これにより、aspxページにdatePickerまたはjQueryのUIJSファイルが正しく読み込まれない原因となるJSファイルがいくつかあると思います。

誰かが私の信念を確認したり、jQueryのUIプラグインを妨害している原因を見つけるためのヒントを提供したりできますか?

4

21 に答える 21

222

私は何時間も同じような問題に苦しんでいました。その後、jQueryが2回含まれていることがわかりました。1回はjQuery関数を追加したプログラムによるもので、もう1回は社内デバッガーによるものです。

于 2010-11-30T11:15:23.947 に答える
47

$変数を使用している別のライブラリがある場合は、次のように実行できます。

var $j = jQuery.noConflict();
$j("#datepicker").datepicker();

また、javascriptインクルードが正しい順序になっていることを確認して、jqueryコアライブラリがjquery.uiの前に定義されていることを確認してください。私はそれが問題を引き起こしました。

于 2009-07-31T14:04:28.923 に答える
26
于 2017-01-03T01:36:12.563 に答える
25

このエラーは通常、jQueryUIセットからファイルが欠落している場合に表示されます。

すべてのファイル、jQuery UIファイル、CSSと画像があり、サーバー上の正しくリンクされたファイル/ディレクトリの場所にあることを再確認してください。

于 2009-07-31T14:47:36.450 に答える
9

競合があると思われる場合は、jQuery.noConflict()コードで使用できます。詳細はドキュメントにあります。

マジックの参照-JQUERYのショートカット

常に完全な「jQuery」を入力したくない場合は、いくつかの代替ショートカットがあります。

jQueryを別のショートカットに再割り当て var $j = jQuery;します(別のライブラリを使用する場合は、これが最善のアプローチです)次の手法を使用すると、$を永続的に上書きせずにコードブロック内で$を使用できます。

(function($) { /* some code that uses $ */ })(jQuery)

注:この手法を使用すると、$がPrototypeの$になることを期待するこのカプセル化された関数内でPrototypeメソッドを使用できなくなるため、そのブロックでjQueryのみを使用することを選択します。DOMreadyイベントへの引数を使用します。

jQuery(function($) { /*some code that uses $ */ });

注:繰り返しますが、そのブロック内ではプロトタイプメソッドを使用できません

それはドキュメントの終わりからであり、あなたに役立つかもしれません

于 2009-07-31T14:04:36.380 に答える
8

最初に明白なことを行ってください:jquery-ui.jsファイルをよく参照していますか?

Firebugの[ネットワーク]タブを使用して、Firebugがロードされているかどうか、またはWeb開発者ツールバーのInformation \Viewjavascriptコードを使用してみてください。

于 2009-07-31T14:59:36.433 に答える
3

Firebugを使用して、1)Javascriptエラーがないこと、および2)#datepicker要素がページに存在することを確認しましたか?

ほとんどの場合、datepicker呼び出しの前に、datepicker呼び出しの実行を妨げているエラーがあります。

于 2009-07-31T14:05:51.543 に答える
3

この投稿はかなり古いことは知っていますが、参考までに、datepickerのバージョンを更新してこの問題を修正しました

何時間ものデバッグを避けるためにも、それを試す価値があります。

https://cdnjs.com/libraries/bootstrap-datepicker

于 2016-09-20T09:44:57.380 に答える
2

この問題が発生したばかりで、</body>タグで修正される前に、JS参照とコードをページの下部に移動しました。

于 2010-04-23T01:33:55.973 に答える
1

また、ファイルをダウンロードするディレクトリの権限も確認してください。なんらかの理由でこれをダウンロードすると、デフォルトではアクセスが許可されていないフォルダに保存されていました。それが問題であると理解するのに永遠に時間がかかりましたが、ディレクトリとその内容のアクセス許可を変更する必要がありました。すべての人が読み取り専用になるように設定しました。今はうまくいきます。

于 2010-09-07T04:26:40.340 に答える
1

最近この問題に遭遇しました-問題は、headタグにjQuery UIファイルを含めていたのですが、使用していたTelerikライブラリにはbodyタグの下部にjQueryが含まれていました(したがって、明らかにjQueryを再初期化してUIをアンロードしました)以前にロードされたプラグイン)。

解決策は、jQueryが実際に含まれている場所を見つけ、その後にjQueryUIスクリプトを含めることでした。

于 2011-05-11T16:06:17.530 に答える
1

私にとっては、スクリプトの宣言から「defer」プロパティを削除する必要がありました。

于 2021-09-06T02:32:09.640 に答える
0

私はちょうど同様の問題に遭遇しました。スクリプト参照を自己終了タグ(つまり<script src=".." />)から空のノード(つまり<script src=".."></script>)に変更すると、エラーがなくなり、突然jQueryUI関数を参照できるようになりました。

当時、私はこれが私の頭脳であることに気づいていませんでした。そもそもそれを適切に閉じていなかったのです。(これは、スレッドに出くわした他の誰かが同様の問題を抱えている可能性があるという理由だけで投稿しています。)

于 2011-06-14T13:20:51.440 に答える
0

一部のファイルは、呼び出す前にロードされません。

例:あなたのコード:

<%= javascript_include_tag "distpicker.min" %>
<%= javascript_include_tag "distpicker.data.min" %>

これに変更します:

<%= javascript_include_tag "distpicker.data.min" %>
<%= javascript_include_tag "distpicker.min" %>
于 2015-05-28T06:50:20.067 に答える
0

_Layout.cshtmlのjqueryバンドルを削除するこの問題を修正できます

ヘッダ

    <script src="~/Scripts/jquery-1.10.2.js"></script>
    <script src="~/Scripts/kendo/2015.2.902/kendo.all.min.js"></script>
    ...

フッター

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)

フッターをに変更

    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)
于 2017-10-03T01:52:05.480 に答える
0

$( "#<%= txtDateElementId.ClientID%>")。datepicker();を使用してみましたか。$( "#txtDateElementId")。datepicker();の代わりに JQueryを使用してIDで要素を選択する場合。

于 2018-08-07T16:35:30.197 に答える
0

古い質問-新しいバージョンの.NET(4.5.6)-同じ問題-新しい回答

NuGetの使用

NuGetを介して次のものがインストールされていることを確認してください。

  • jQuery
  • AspNet.ScriptManager.jQuery
  • jQuery.UI.Combined
  • AspNet.ScriptManager.jQuery.UI.Combined

ここからインストールします[[ツール]>[NuGetパッケージマネージャー]>[ソリューションのNuGetパッケージの管理]]

次に、jqueryとjquery.ui.combinedをSite.MasterのScriptManagerに追加する必要があります。次のようになります。

    <asp:ScriptManager runat="server">
        <Scripts>
            <%--To learn more about bundling scripts in ScriptManager see https://go.microsoft.com/fwlink/?LinkID=301884 --%>
            <%--Framework Scripts--%>
            <asp:ScriptReference Name="MsAjaxBundle" />
            <asp:ScriptReference Name="jquery" />
            <asp:ScriptReference Name="jquery.ui.combined" />
            <asp:ScriptReference Name="bootstrap" />
            <asp:ScriptReference Name="WebForms.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebForms.js" />
            <asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebUIValidation.js" />
            <asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web" Path="~/Scripts/WebForms/MenuStandards.js" />
            <asp:ScriptReference Name="GridView.js" Assembly="System.Web" Path="~/Scripts/WebForms/GridView.js" />
            <asp:ScriptReference Name="DetailsView.js" Assembly="System.Web" Path="~/Scripts/WebForms/DetailsView.js" />
            <asp:ScriptReference Name="TreeView.js" Assembly="System.Web" Path="~/Scripts/WebForms/TreeView.js" />
            <asp:ScriptReference Name="WebParts.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebParts.js" />
            <asp:ScriptReference Name="Focus.js" Assembly="System.Web" Path="~/Scripts/WebForms/Focus.js" />
            <asp:ScriptReference Name="WebFormsBundle" />
            <%--Site Scripts--%>
        </Scripts>
    </asp:ScriptManager>

これで同じ問題が解決しました。ありがとうございました。

于 2020-09-23T15:52:11.773 に答える
0

(” #datepicker“)。datepickerは関数ではありません

私も数日前にこの問題に遭遇しました。これは、ファイル内にjqueryリンクが複数回あることが原因である可能性があります。その重複コンテンツをファイル全体で検索してみてください。

次のようになります。

<script src="https://code.jquery.com/jquery-1.12.1.js"></script>

1つを<head></head>タグに残し、残りをすべて削除します。これで問題が解決します。

于 2021-04-03T05:35:04.277 に答える
0

Laravelを使用している場合、デフォルトapp.jsの宣言にはが含まれていますdefer
消して

ここに画像の説明を入力してください

于 2021-11-26T16:17:23.123 に答える
0

jQueryを2回参照すると、問題が発生する可能性があります。

于 2022-02-08T07:04:14.677 に答える
-1

私の場合、次のスクリプトのインポート順序を変更することで解決しました。前(動作しない):

後(作業中):

于 2019-09-12T17:03:35.007 に答える