2010-12-07 7 views
1

はなぜ私が取得しています:Uncaughtを取得するのはなぜですか?TypeError:Object#<HTMLSelectElement>にはメソッド 'find'がありませんか?

Uncaught TypeError: Object # has no method 'find' (anonymous function):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メソッドを使用するラインで落ちる:私はGoogle Chromeを使用しています

<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> 

:私はHTMLで私の頭のタグで

$(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>'); 
    }); 
}); 

(開発者ツールと一緒に)。

私が他のスレッドで説明したことは、Chromeの開発ツールを使用すると問題が発生することでした。しかし、私はデベロッパーツールを使わずにコードを実行していましたが、同じことが起こりました(スクリプトは何もしませんでした=>エラーが発生しました)。

種類よろしく、
専制君主

+0

なぜあなたが使用している[0]?この要素はIDを持っているので、反復するコレクションはありません。 –

+0

@ ToonMariner - デバッグ中にDOM選択オブジェクトが配列内にあることがわかりましたので、最初のオブジェクトを取得する必要があると誤って推測しました配列... – despot

答えて

6

あなたが[0]を行うと、あなただけのように、[0]ことを削除し、セレクタは、DOM要素ではなく、.find()を持ってjQueryオブジェクトとして一致する最初の要素を取得している:

$(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は使用しないでください。 .useクラス。

+0

これは問題を解決しました!しかし、同じidを持つ複数のselect要素がある場合を考えてみましょう。何より?私は、JQueryオブジェクトとjavascriptオブジェクトは同じであると考えました。どのように私はjavascript変数を変換しますか:var x = $( "select#p_colorsId")[0]; jQueryオブジェクトに? – despot

+0

@ user521754 - これは答えの後半でした。**あなたはページ内で同じIDを持つ2つの要素を持つことは決してありません。その時点でクラスを使用する必要があります。 –

+0

同じidに関する質問は仮説的でした(私は決してそのような要素のidを使用しません)。私が尋ねた他のサブクエリについては、jQueryオブジェクトとjsオブジェクトからjQueryオブジェクトへの変換に関する詳細を読むことができるリンクを提供できますか? – despot

1

ただ、このようなjQueryオブジェクトにそれを作る:

$($("select#p_colorsId")[0]).find('option') 
関連する問題