jquery选择如果option.value等于某事,则标记一个选中的

我对jquery选择有一些疑问。 在我的情况下,如果option.value等于某事,如何匹配,标记为它selected 。 在线代码在这里

再次重复代码。 它导致了Uncaught TypeError: Object # has no method 'val' ,如何工作作为我的希望? 谢谢。

  $(document).ready(function(){ var num = 3; $("div#selection select.select option").each(function(){ if((this).val()==num){ $(this).attr("selected","selected"); } }); });  
V1 V2 V3 U1 U2 U3

你弄错了

而不是(this).val()你应该在if语句中使用$(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;来优化循环return false;break;对于香草循环)当你找到你的元素时它不会在我们已经“完成”时保持循环元素。

但是,您应该看看Nicola Peluchetti的答案,以获得更高效,更清晰的代码。

你有一个拼写错误并将选项设置为选中你应该使用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()

你的问题从这里开始

$(“div#selection select.select option ”).each(function(){if( (this).val() == num){

改为

 $("div#selection select.select").each(function(){ if($(this).val()==num){ 

你所有的问题都解决了。 如果您考虑在每次更改选择时触发脚本,您可能希望将.each更改为.change。

第一次引用它时,它不是jQuery对象,它是DOM对象,DOM对象没有val()方法。 你应该使用this.value och $(this).val()试试这个:

 $("div#selection select.select option").each(function(){ if($(this).val()==num){ $(this).attr("selected","selected"); } }); 

你的代码效果很好。 只需用$(this)更新’this’即可。 如果没有任何其他选择下拉菜单,您可以省略’div#selection select’。 如下。

 $(document).ready(function(){ var num = 3; $("select option").each(function(){ if($(this).val()==num){ $(this).attr("selected","selected"); } }); }); 

试试下面

  $("div#selection select.select").val(num); 

如果您的选择框是多选,您可以尝试

  $("div#selection select.select option").each(function(){ if($(this).val()==num){ $(this).attr("selected", true); } });