0

3 つの選択フィールドを持つフォームがあります。最初の選択に基づいて 2 番目の選択を行い、次に 2 番目の選択に基づいて 3 番目の選択を行います。したがって、プロパティ タイプ -> 郡 -> 市区町村です。私のjsの基本的な考え方は次のとおりです。

$('.property_type').change(function(){
if(this.value == 'com'){
    $('.property_detail_county').html('MY HTML');
}else if((this.value == 'res')){
    $('.property_detail_county').html('MORE HTML');

}

これらはすべて .ready() にあります。そして、これはうまく機能しています。私の問題は、2 番目の選択 (都市) を設定するために作成された 2 番目の関数を記述しようとすると、何も起動しないことです。これが私の 2 番目の関数で、これも ready の中にあります。

$('.property_detail_county').change(function(){
console.log('Changed');

});

私の理論では、条件のために 2 番目の関数が読み取られたりロードされたりすることはありません。これを行う別の方法を知っていますか?

前もって感謝します。

Psこれがすでに回答されている場合は、お気軽に正しい方向に向けてください。件名がどこにも見つかりませんでした。

4

1 に答える 1

0

2 番目のドロップダウンに入力した HTML によって異なります。たとえば、HTML が次のような場合:

<div id="a"><select>...</select></div>

<div id="b">...</div>

そして、あなたのJavaScriptはこれを行います:

if(this.value == 'com'){
    $('.property_detail_county').html('<select>...</select>');
}

2 番目の select ステートメントを完全に置き換えましたが、それに関連する変更はありません。変更は、交換した古いものにも関連付けられて<select>います。

変更コードを元に戻すことができます:

if(this.value == 'com'){
    $('#b').html('<select id="sel_b">...</select>');
    $("#sel_b").click(function() {
        ... the stuff to do when 2nd one is clicked ...
    }
}

その 2 番目のセットを処理する関数を定義すると、実際にうまく機能します。

<div>DOM ツリーの 1 つ以上の要素にバブルアップする際に change イベントを検出する方法は他にもあります。これについては、jQuery のドキュメントを参照してください。それは「イベント委任」と呼ばれます。

于 2013-04-15T19:21:35.733 に答える