2

なぜ私は得ています:

Uncaught TypeError:Object#has no method'find'(匿名関数):8080 / twolittlesheep / js / sizeColorDependancy.js:16 c.event.handleajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min .js:63 c.event.add.h.handle.oajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js:56

単純なjQueryスクリプトを実行しようとすると?スクリプトは、次のjqueryコードスニペットでfindメソッドを使用する行にあります。

$(document).ready(function(){
  $("select#p_sizesId").change(function(){
   var $colorsSelect = $("select#p_colorsId")[0];
   $("select#p_colorsId")[0].find('option').remove().end().append('<option selected="selected" value="whatever">text</option>');
  });
});

htmlのheadタグには、次のものがあります。

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<%-- <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script> --%>
<script type="text/javascript" src="js/sizeColorDependancy.js"></script>

私はGoogleChromeを(開発者ツールと一緒に)使用しています。

別のスレッドで説明として見つけたのは、Chromeの開発者ツールを使用すると問題が発生するということだけでした。しかし、開発ツールを使用せずにコードを実行していたところ、同じことが起こりました(スクリプトは何もしませんでした=>エラーが発生しました)。

4

2 に答える 2

6

[0]セレクターから最初の要素を取得する場合、次のように、を削除するだけのjQueryオブジェクトではなく、DOM要素として一致します。.find()[0]

$(document).ready(function(){
  $("#p_sizesId").change(function(){
   $("#p_colorsId").find('option').remove().end().append('<option selected="selected" value="whatever">text</option>');
  });
});

他のいくつかの注意点として、#idセレクターを使用する場合は、どうしても必要な場合を除いてプレフィックスを付けないでください。速度が低下します。また、IDは一意である必要があるため、最初の要素を取得する必要はありません。セレクターは、1つまたは0つの要素にのみ一致する必要があります。それらが一意でない場合は、 IDを使用せず、代わりにクラスを使用してください。

于 2010-12-07T13:09:05.883 に答える
1

次のようなjQueryオブジェクトにします。

$($("select#p_colorsId")[0]).find('option')
于 2013-08-29T13:06:48.650 に答える