使用jQuery在可能的属性值中进行选择

时间:2012-04-20 13:07:01

标签: javascript jquery

是否可以像这样用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'])

5 个答案:

答案 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}}是最慢的。

JS Perf test-case

顺便说一下,虽然我最初错过了语法错误,但是缺少逗号来分隔选择器意味着你原来的,不工作的代码正在寻找.filter()的子元素,这将是无效的标记 - 起来。

使用逗号识别单独的元素选择器。

答案 3 :(得分:1)

为什么不给它们所有相同的类,然后像这样选择它们

$('.selectedInputs')

答案 4 :(得分:1)

关于参考(特别是下面的评论)http://api.jquery.com/multiple-attribute-selector/可以考虑替代解决方案:

$('input[name=A][name=B]')

酷!