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'])セレクターの1つのアイテムでのみ機能します。

4

5 に答える 5

3

それを達成するための多くの方法、ここに1つの例があります:

$('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では、2番目のオプション($('input[name^="val"]');)が最速です(ただし、実装をより簡単に信頼できる可能性があります。予想どおり、document.querySelectorAll()ファイナルアプローチは最も低速です。.filter()

JSPerfテストケース

ちなみに、私はもともと構文エラーを見逃していましたが、セレクターを区切るためのコンマがないため、元の機能していないコードが、の子要素を探していまし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 に答える