我有这个
$('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选择器 只是name属性。我觉得我被困在做不同的功能但是想提出问题,看看是否有人可以在这个框外思考。
注意:这个项目使用jQuery 1.3.2,我还不能升级。在你说什么之前,是的,我和你一起升级......
答案 0 :(得分:13)
没有'或'字符,但您可以使用多个选择器 - 您只需用逗号分隔它们:
$('input:radio[name=foo], input:radio[name=bar]').change(function() {
blah();
});
或者更好的是,使用类选择器,因为这正是它们的设计目的。
答案 1 :(得分:2)
不幸的是,or
选择器中没有[attr]
的简单选择器。您可以使用comma (,
)分隔您的选择:
$('input:radio[name=foo], input:radio[name=bar]').change(...);
或者,如果您的选择时间较长,则可以使用$.fn.filter
:
$('#foo #bar #baz .fizz .buzz input:radio').filter('[name=foo], [name=bar]').change(...);
我建议您查看jQuery selectors的完整列表。
答案 2 :(得分:1)
jQuery的$()
函数使用CSS选择器(几乎所有CSS3加上一些its own)。他们的语法与JavaScript的逻辑运算符没有任何关系。
CSS3和jQuery都不提供“匹配任何这些”,因此您使用selector group代替:
$('input:radio[name=foo], input:radio[name=bar], input:radio[name=foobar]').change(function() {
blah();
});
答案 3 :(得分:1)
另一种选择是为正则表达式添加新的过滤器:
http://james.padolsey.com/javascript/regex-selector-for-jquery/
然后你可以做类似
的事情$('input:radio:regex(name, ^(foo|bar|baz)$)')
答案 4 :(得分:1)
您提出的解决方案适用于较新版本的jQuery。您可以对您的查询进行链接过滤,但是......
$('input:radio').filter("[name=foo],[name=bar]").change(function() {
blah();
});
在这里查看和玩jsfiddle http://jsfiddle.net/NAgv5/1/