0

選択ボックス自体をクリックせずに、選択ボックスで値が変更されたことを確認するにはどうすればよいですか。

私のコードは次のとおりです。

Jクエリ

            $("select").each(function() {
                $(this).change(function() {
                    if ($(this).val() === "-Select-"){
                        this.parent().addClass("highlightSelect");
                        this.parent().sibling().show();
                    }   else{
                        this.parent().removeClass("highlightSelect");
                        this.parent().sibling().hide();
                    }
                });
            });

HTML

<div id="wwctrl_add_savedAddressId" class="wwctrl styled-select">
<select id="add_savedAddressId" class="storedPaymentInput_size4 required savedAddress checkDropdown valid" onchange="changeSavedAddressType();generateSavedAddressAdd();" name="summaryData.usedAddress">
<option value="-Select-">-Select-</option>
<option value="O">Enter New Address</option>
<option value="3041">Home - 116 Parrot...</option>
<option value="22268">Other - rwara, aw...</option>
<option value="21372">Other - 1040..</option>
</select>
</div>
<div class="error" for="add_savedAddressId" generated="true" style="display: none;"> Select item</div>

注:上記の選択ボックスの値の変更に影響を与える他のボタンがあります

4

1 に答える 1

1

まず、問題のコードは機能しません。次のようにする必要があります。

                $("select").change(function() {
                    if ($(this).val() === "-Select-"){
                        $(this).parent().addClass("highlightSelect");
                        $(this).parent().siblings().show();
                    }   else{
                        $(this).parent().removeClass("highlightSelect");
                        $(this).parent().siblings().hide();
                    }
                });

親はjqueryオブジェクト関数であり、domオブジェクト関数ではなくthis、次のようにjqオブジェクトに変換できるdomオブジェクトです$(this)。また、thersはsiblingjqueryのメソッドではありませんが、ありますsiblings.next()または、次/前の兄弟を取得する場合は、 /を使用できます。.prev()代わりにsiblings、要素のすべての兄弟を返します。

それぞれを削除しましたが、実際には必要ありません。これを使用することもできますが、ほとんどすべてのjqueryメソッドは一連のメソッドを使用して操作を実行するため$("select")、ページ内で選択がほとんど見つからず、$("select").change(...)onchangedハンドラーがで見つかったすべての選択にバインドされ$("select")ます。

そして、あなたの質問に答えてください。私が理解しているように、選択した値がポルグラマティックに変更された後、変更ハンドラーを呼び出したいと思います。これは次のように実行できます$("select").change()。ただし、この方法では、すべての選択で変更イベントを呼び出すため、次のように実行できます$("#add_savedAddressId").change()。2番目のケースでは、idを持つselectに対してのみchangeevenハンドラーを呼び出します。add_savedAddressId

于 2012-09-13T09:49:02.147 に答える