jquery select if option.value 等于某物,标记为选中
Posted
技术标签:
【中文标题】jquery select if option.value 等于某物,标记为选中【英文标题】:jquery selection if option.value equal something, mark a selected 【发布时间】:2012-01-24 05:53:07 【问题描述】:我有一些关于 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>
【问题讨论】:
也许这篇文章可以帮到你:***.com/q/196684/508702 【参考方案1】:你写错了
您应该在 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;
用于普通循环)来优化你的循环,这样它就不会在我们已经“完成”时保持循环元素。
但是,您应该查看 Nicola Peluchetti 的答案以获得更高效、更简洁的代码。
【讨论】:
【参考方案2】:您第一次引用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");
);
【讨论】:
【参考方案3】:您的代码运行良好。只需用 $(this) 更新“this”。如果没有任何其他选择下拉菜单,您可以省略“div#selection select”。如下所示。
$(document).ready(function()
var num = 3;
$("select option").each(function()
if($(this).val()==num)
$(this).attr("selected","selected");
);
);
【讨论】:
【参考方案4】:您有一个错字,并且要将选项设置为选中,您应该使用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()
【讨论】:
另外,我编辑了我的帖子并引用了这个答案,因为它太性感了 这适用于 OP,因为该值是数字。如果像我一样需要它来处理字符串值,请通过在"+num+"
周围添加单引号来更改为 $("div#selection select.select option[value='"+num+"']").prop("selected", true);
。【参考方案5】:
下面试试
$("div#selection select.select").val(num);
如果你的选择框是多选,你可以试试
$("div#selection select.select option").each(function()
if($(this).val()==num)
$(this).attr("selected", true);
);
【讨论】:
【参考方案6】:你的问题从这里开始
$("div#selection select.select option").each(function() if((this).val()==num)
改成
$("div#selection select.select").each(function()
if($(this).val()==num)
你所有的问题都解决了。如果您想在每次更改选择时触发脚本,您可能需要将 .each 更改为 .change。
【讨论】:
以上是关于jquery select if option.value 等于某物,标记为选中的主要内容,如果未能解决你的问题,请参考以下文章
jquery select if option.value 等于某物,标记为选中