0

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

4

5 回答 5

3

有很多方法可以做到这一点,这里有一个例子:

$('input[name="A"], input[name="B"], input[name="C"]')

对于所有这些,请查看多个属性选择器

于 2012-04-20T13:09:05.323 回答
1

尝试

$("input[name='A'],input[name='B'],input[name='C']")

安装的

$("input[name='A'] input[name='B'] input[name='C']")
于 2012-04-20T13:08:57.493 回答
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()。最后的方法,.filter()如预期的那样,是最慢的。

JS Perf 测试用例

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

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

于 2012-04-20T13:09:20.067 回答
1

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

$('.selectedInputs')

于 2012-04-20T13:10:04.903 回答
1

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

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

凉爽的!

于 2012-04-20T13:40:20.183 回答