0

如何在不单击选择框本身的情况下确定选择框中的值已更改。

我的代码如下:

查询

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

parent 是 jquery 对象函数而不是 dom 对象函数,并且this是一个 dom 对象,可以像这样转换为 jq 对象$(this):此外,thers 不是siblingjquery 中的方法,但有siblings. 或者,如果您想获取下一个/上一个兄弟姐妹,您可以使用.next()/.prev()而不是siblings它将返回一个元素的所有兄弟姐妹

我删除了每个,但实际上这不是必需的。您可以使用它,但几乎任何 jquery 方法都会使用一组方法进行操作,因此$("select")可能会在页面中找到很少的选择,$("select").change(...)并将 onchanged 处理程序绑定到由$("select").

并回答您的问题:据我所知,您想在以编程方式更改所选值后调用更改处理程序。您可以这样做:$("select").change(),但是这样您将在所有选择上调用更改事件,因此您可以这样做:$("#add_savedAddressId").change()。在第二种情况下,您将只为带有 id 的选择调用更改偶数处理程序add_savedAddressId

于 2012-09-13T09:49:02.147 回答