4

プラグインが読み込まれないのはなぜですか? jquery とプラグインのリンクが参照されます。プラグインの名前は .. .. コードに欠けているものを見つけるのを手伝ってください。

 <script src="~/Scripts/jquery-1.7.1.js"></script>
  <script src="~/Scripts/chosen.jquery.js"></script>


  <select class="chzn-select" tabindex="1" style="width:350px;" data- 
    placeholder="Choose a Country">
      <option value=""></option> 
      <option value="United States">United States</option> 
      <option value="United Kingdom">United Kingdom</option> 
      <option value="Afghanistan">Afghanistan</option> 
      <option value="Albania">Albania</option>                
   </select>

   <script>

   $(document).ready(function(){
       $(".chzn-select").chosen();
   });

   </script>

firebug エラーが表示されます:

TypeError: $(...).chosen は関数ではありません

4

5 に答える 5

5

コメントを読んで関連する問題を検索したところ、その理由は jQuery が 2 回含まれていたためであることがわかりました。これを見てください。

このcdn サービスから選択したこのフィドルを作成しました。

jquery が 1 回だけ含まれている場合

$(".chzn-select").chosen();

正常に動作するはずです。

編集:

使用する代わりに

$(document).ready(function(){
    $(".chzn-select").chosen();
});

試す

$(document).bind("pageinit", function() {
    $(".chzn-select").chosen();
});
于 2013-02-22T14:05:43.767 に答える
2

jquery や選択したプラグインが読み込まれていないようです。

それらを次のものに置き換えてみてください:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
<script src="/scripts/chosen.jquery.js" type="text/javascript"></script>

またchosen.jquery.js、ソースから URL を開いて、本当に含まれていることを確認してください。または、firebug またはその他の開発者コンソールでネットワーク タブを確認してください。404 が表示される場合、スクリプトは正しい場所にありません。

また、ページレイアウトが次のようになっていることを確認してください

<html>
    <head>
        <!-- your css files -->
        <link/>
    </head>
<body>
    <!-- Your html above javascript includes-->
    <select>
    ....
    </select>
    <!-- Inlcude your js files at the bottom -->
    <script src="bla.js" />
    <script>
        //your inline javascript goes below includes

    </script>
</body>

于 2013-02-22T13:07:10.363 に答える
1

~HTML(aspx)では使用しないでください。これはコードビハインドでのみ使用します。/scripts代わりに使用してください。

于 2013-02-22T12:57:53.770 に答える
1

Archer が正しい問題を指摘したと思いますが、解決策として別の提案があります: RegisterClientScriptIncludeを使用します( example )

public void Page_Load()
{
    var pageType = this.GetType();
    ClientScriptManager cs = Page.ClientScript;

    if (!cs.IsClientScriptIncludeRegistered(pageType, "jQuery"))
        cs.RegisterClientScriptInclude(pageType, "jQuery", ResolveClientUrl("~/Scripts/jquery-1.7.1.js"));
    if (!cs.IsClientScriptIncludeRegistered(pageType, "jQuery.chosen"))
        cs.RegisterClientScriptInclude(pageType, "jQuery.chosen", ResolveClientUrl("~/Scripts/chosen.jquery.js"));
}

これにより、ページ ヘッダー要素にスクリプト タグが配置されます。つまり、ページ自体の参照を削除できます。これは主に、不明な仮想ディレクトリの場所 (開発環境では、多くの場合、開発 Web サーバーの下のディレクトリ) でホストする際の問題を回避する目的に役立ちます。

于 2013-02-22T13:09:01.193 に答える
0

これは、chosen.jquery.jsJQuery がパスをチェックしようとする前にロードしているためです。フォルダからページに Js ファイルをドラッグ アンド ドロップするだけの場合は、心配する必要はありません。 ~

于 2013-02-22T13:09:43.353 に答える