Jquery确定选择框的值是否有变化

时间:2012-09-13 09:22:37

标签: jquery

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

我的代码如下:

JQUERY

            $("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>

注意:我有其他按钮会影响上面选择框的值的变化

1 个答案:

答案 0 :(得分: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在jquery中不是sibling方法,但有siblings。或者,如果您想要使用下一个/上一个兄弟,您可以使用.next() / .prev()代替siblings,这将返回元素的所有兄弟

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

并回答你的问题:正如我所理解的那样,你想要在选择值以字符顺序更改后调用更改处理程序。您可以这样做:$("select"),但这样您就可以在所有选择上调用change事件,因此您可以这样做:$("select").change()。在第二种情况下,您将仅为id为$("#add_savedAddressId").change()

的select调用change even handler