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 等于某物,标记为选中

Jquery - Select 和 Checkbox Textarea的操作

jquery验证表单是不是为空

jquery - select

jquery select操作大全

jQuery中each实现continue和break