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); } });