jQuery/JavaScript选择器或||
可能重复:jQuery/JavaScript选择器或||,javascript,jquery,operators,css-selectors,Javascript,Jquery,Operators,Css Selectors,可能重复: 我有这个 $('input:radio[name=foo]').change(function() { blah(); }); $('input:radio[name=bar]').change(function() { blah(); }); 我可以这样做吗 $('input:radio[name=foo||bar]').change(function() { blah(); }); 如果我有另一个呢 $('input:radio[name=foo|
我有这个
$('input:radio[name=foo]').change(function() {
blah();
});
$('input:radio[name=bar]').change(function() {
blah();
});
我可以这样做吗
$('input:radio[name=foo||bar]').change(function() {
blah();
});
如果我有另一个呢
$('input:radio[name=foo||bar||foobar]').change(function() {
blah();
});
我不能使用理想的类,因为这是一个自定义框架(不是我的)
生成覆盖我的类的HTML。此外,没有可用的id选择器
只是名称属性。我想我一直在做独立的功能,但我想提出一个问题,看看是否有人能在这个问题上跳出框框思考
注意:这个项目使用jQuery1.3.2,我现在还不能升级。在你说什么之前,是的,我支持你升级…jQuery的$()
函数使用CSS选择器(几乎全部加上一些)。它们的语法与JavaScript的逻辑运算符没有任何关系
CSS3和jQuery都不提供“匹配其中任何一个”,因此您可以使用:
没有“或”字符,但您可以使用多个选择器-您只需用逗号分隔它们:
$('input:radio[name=foo], input:radio[name=bar]').change(function() {
blah();
});
或者更好的是,使用类选择器,因为这正是它们的设计目的。不幸的是,在
[attr]
选择器中没有一个简单的或选择器。您可以使用分隔符分隔您的选择:
$('input:radio[name=foo], input:radio[name=bar]').change(...);
或者,如果您的选择恰好较长,则可以使用$.fn.filter
:
$('#foo #bar #baz .fizz .buzz input:radio').filter('[name=foo], [name=bar]').change(...);
我建议查看整个列表。另一种选择是为regex添加一个新过滤器:
然后你可以做类似的事情
$('input:radio:regex(name, ^(foo|bar|baz)$)')
您提出的解决方案确实适用于较新版本的jQuery。不过,您可以将筛选器链接到查询上
$('input:radio').filter("[name=foo],[name=bar]").change(function() {
blah();
});
在这里查看并使用JSFIDLE
我不知道您可以使用逗号分隔符,谢谢!学到了一些新东西+1也不知道你能做到。回答得好。
$('input:radio').filter("[name=foo],[name=bar]").change(function() {
blah();
});