如何在不单击选择框本身的情况下确定选择框中的值已更改。
我的代码如下:
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>
注意:我有其他按钮会影响上面选择框的值的变化
答案 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()