2013-02-22 55 views
0

我有一组Yes/No下拉菜单,我想选择值为Yes的所有选择元素。JQuery Selector按值来选择下拉

<select name="foo1"> 
    <option value="yes">Yes</option> 
    <option value="no">No</option> 
</select> 
<select name="foo2"> 
    <option value="yes">Yes</option> 
    <option value="no">No</option> 
</select> 
<select name="foo3"> 
    <option value="yes">Yes</option> 
    <option value="no">No</option> 
</select> 

我想要一个JQuery选择器,返回当前处于Yes状态的选择节点的子集。我意识到我可以做一个简单的调用filter(),但我宁愿在选择器中做所有事情。

$('#myform select').filter(function(k,v){return v.value == 'yes';}) 

在此先感谢。

+0

为什么?我会使用'filter'方法,更快,更有前途。 – undefined 2013-02-22 21:04:04

回答

2
$('#myform select option[value="yes"]:selected').parent() 

See demo

+0

男人,我可以发誓我试过这个。我尝试了很多东西,有些完全脱离了墙壁。谁知道我到底在做什么。谢谢。 – dharga 2013-02-22 21:30:35

0
$('#myform select[value=yes]'); 
1

如果你希望它是有效的,你应该坚持filter,但您可以创建自定义过滤器,你可以在你的选择直接使用:

$.expr[':'].value = $.expr.createPseudo(function (value) { 
    return function (el) { 
     return el.value == value; 
    }; 
}); 

使用方法如下:

$('select:value(yes)'); 

这里的小提琴:http://jsfiddle.net/Eb3hp/

+0

这看起来真棒。我认为我的目的过于矫枉过正,但是我会为冷静价值+1。 – dharga 2013-02-22 21:36:51

1

这将是

$('#form select:has(option[value=yes]:selected)') 

它会得到所有选择具有选项:带值选择= YES

FIDDLE