是否可以像这样用jQuery选择项目:
// pseudocode
$('input[name=val1 or val2 or val3...]')
现在我正在努力做下一个:
$("input[name='A'] input[name='B'] input[name='C']").blur(function() {
var result = parseFloat($("input[name='A']").val()) +
parseFloat($("input[name='B']").val()) -
parseFloat($("input[name='C']").val());
alert(result.toFixed(2));
});
但那不起作用。它仅适用于选择器中的一个项目$("input[name='A'])
。
答案 0 :(得分:3)
很多方法可以实现这一点,这是一个例子:
$('input[name="A"], input[name="B"], input[name="C"]')
对于所有这些,请查看multiple attribute selectors
答案 1 :(得分:1)
尝试
$("input[name='A'],input[name='B'],input[name='C']")
而不是
$("input[name='A'] input[name='B'] input[name='C']")
答案 2 :(得分:1)
据我所知,您必须明确指定选项:
$('input[name="val1"], input[name="val2"], input[name="val3"]')
如果名称具有相同的格式(并以val
字符串开头),您可以这样做:
$('input[name^="val"]');
或者,但这更不等于第一种方法,虽然看起来效率较低(可能):
$('input[name]').filter(
function(){
return (this.name.indexOf('val') > -1);
});
有点令人惊讶的是,在Chrome 18 / Win XP上,第二个选项($('input[name^="val"]');
)速度最快(尽管它可能更容易依赖document.querySelectorAll()
来实现它。最后的方法是{正如预期的那样,{1}}是最慢的。
顺便说一下,虽然我最初错过了语法错误,但是缺少逗号来分隔选择器意味着你原来的,不工作的代码正在寻找.filter()
的子元素,这将是无效的标记 - 起来。
使用逗号识别单独的元素选择器。
答案 3 :(得分:1)
为什么不给它们所有相同的类,然后像这样选择它们
$('.selectedInputs')
答案 4 :(得分:1)
关于参考(特别是下面的评论)http://api.jquery.com/multiple-attribute-selector/可以考虑替代解决方案:
$('input[name=A][name=B]')
酷!