我对jquery选择有一些疑问。在我的情况下,如果option.value
等于某事,如何匹配,为其标记selected
。 Online code here
再次重复代码。它引起了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>
答案 0 :(得分:19)
你弄错了
您应该在if语句中使用(this).val()
而不是$(this).val()
。 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");
}
});
});
修改强>
当您找到元素时,可以通过添加return false;
(break;
for vanilla循环)来优化循环,以便在我们已经“完成”时不会保留循环元素。< / p>
但是,您应该查看 Nicola Peluchetti的答案,以获得更高效,更清晰的代码。
答案 1 :(得分:17)
你有一个拼写错误并将选项设置为选中你应该使用prop()
而不是attr()。在任何情况下你都可以做到
var num = 3;
$("div#selection select.select option[value="+num+"]").prop("selected", true);
在这里摆弄http://jsfiddle.net/YRBrp/
编辑 - 错误当然是Tim S.指出的,你应该使用$(this).val()
而不是(this).val()
答案 2 :(得分:1)
你的问题从这里开始
$(&#34; div#selection select.select 选项 &#34;)。each(function(){ 如果(的 (本).VAL() 强> == NUM){
将其更改为
$("div#selection select.select").each(function(){
if($(this).val()==num){
你所有的问题都解决了。如果您考虑在每次更改选择时触发脚本,您可能希望将.each更改为.change。
答案 3 :(得分:0)
第一次引用this
时,它不是jQuery对象,而是DOM对象,DOM对象没有val()
方法。你应该使用this.value
och $(this).val()
试试这个:
$("div#selection select.select option").each(function(){
if($(this).val()==num){
$(this).attr("selected","selected");
}
});
答案 4 :(得分:0)
您的代码效果很好。只需用$(this)更新'this'即可。如果没有任何其他选择下拉菜单,您可以省略'div#selection select'。如下。
$(document).ready(function(){
var num = 3;
$("select option").each(function(){
if($(this).val()==num){
$(this).attr("selected","selected");
}
});
});
答案 5 :(得分:0)
尝试以下
$("div#selection select.select").val(num);
如果您的选择框是多选,您可以尝试
$("div#selection select.select option").each(function(){
if($(this).val()==num){
$(this).attr("selected", true);
}
});