Gib*_*rno 17 jquery jquery-selectors
我有一些关于jquery选择的问题.在我的情况下,如果option.value相等的东西如何匹配,标记selected为它.在线代码在这里
再次重复代码.它引起了Uncaught TypeError: Object #<HTMLOptionElement> has no method 'val',如何以我的希望工作?谢谢.
<script type="text/javascript">
$(document).ready(function(){
var num = 3;
$("div#selection select.select option").each(function(){
if((this).val()==num){
$(this).attr("selected","selected");
}
});
});
</script>
<div id="selection">
<label>Label1:</label>
<select class="select">
<option value="1">V1</option>
<option value="2">V2</option>
<option value="3">V3</option>
</select>
<label>Label2:</label>
<select class="select">
<option value="4">U1</option>
<option value="5">U2</option>
<option value="6">U3</option>
</select>
</div>
Run Code Online (Sandbox Code Playgroud)
Tim*_* S. 19
你弄错了
而不是(this).val()你应该$(this).val()在你的if语句中使用.this指的是HTMLObject,$(this)指的是jQuery对象.因为该.val()方法是jQuery框架的一部分,所以不能在HTMLObjects上使用它.但我相信你知道这一点,因为它看起来非常像一个小错字.
这应该工作:
$(document).ready(function(){
var num = 3;
$("div#selection select.select option").each(function(){
if($(this).val()==num){ // EDITED THIS LINE
$(this).attr("selected","selected");
}
});
});
Run Code Online (Sandbox Code Playgroud)
编辑
您可以通过在找到元素时添加return false;(break;对于vanilla循环)来优化循环,这样在我们已经"完成"时它不会保留循环元素.
但是,您应该看看Nicola Peluchetti的答案,以获得更高效,更清晰的代码.
Nic*_*tti 17
你有一个拼写错误,并将选项设置为你应该使用的选项prop()而不是attr().无论如何你可以做到
var num = 3;
$("div#selection select.select option[value="+num+"]").prop("selected", true);
Run Code Online (Sandbox Code Playgroud)
在这里摆弄http://jsfiddle.net/YRBrp/
编辑 - 错误当然是Tim S.指出的,你应该使用$(this).val()而不是(this).val()