jQuery-クラスの要素から属性の値のリストを取得します


86

.objectという属性を持つクラスがありますlevellevelページ上のすべての異なる値のリストを取得して、最も高い値を選択できるようにします。

私が次のようなことをした場合:

$(".object").attr("level")

...レベル属性の値である値のリストが表示されますか?私はそうは思わないが、それではどうやってそのようなことをするのか?

注:より一般的な操作用のHTMLオブジェクトを選択するのではなく、属性の値を選択したいと思います。

編集:最高の「レベル」を得るために私はこれを行いましたが、うまくいかないようです。私は今、他の提案された方法を試してみます。

var highLevel=0;
$.each(".object[level]", function(i, value) {
   if (value>highLevel) {
       highLevel=value;
   }
});

alert(highLevel);

5
@Ankurこの質問への回答として、これらの1つを選択する必要があります
Nathan Koop

回答:


195

$(".object").attr("level")最初の最初の.object要素の属性を返すだけです。

これにより、すべてlevelの配列が取得されます。

var list = $(".object").map(function(){return $(this).attr("level");}).get();

6
何をし.get()ますか?
ゆうじ '冨田'富田

21
@ Yuji- getjQueryオブジェクトを通常の配列に変換します。
コビ2012年

@MandeepJain:回答を「正しい」とマークするにはどうすればよいですか?これは「承認済み」としてマークされていない可能性がありますが、100人以上が「有用」と投票しています。これで十分です。
Michael Scheper 2016年

1
素晴らしい答え。私にとってもう少し直感的でクリーンなのは.get()、最初に配列を選択してから、.map()プラス矢印関数(ブラウザーサポート:caniuse.com/#search=arrow)を使用して、少し単純なJavaScriptで配列を構築することです。$(".object").get().map(x => x.getAttribute('level'));
elPastor19年


3
<script type="text/javascript"> 
var max = 0;
jQuery(document).ready(function(){ 
    jQuery('.object[level]').each(function(){
        var num = parseInt($(this).attr('level'), 10);
        if (num > max) { max = num; }
    });
    alert(max);
});
</script>

私はこのようなマークアップを想定しています:

<div class="object" level="1">placeholder</div>
<div class="object" level="10">placeholder</div>
<div class="object" level="20">placeholder</div>
<div class="object" level="1000">placeholder</div>
<div class="object" level="40">placeholder</div>
<div class="object" level="3">placeholder</div>
<div class="object" level="5">placeholder</div>

私のコードでは、「1000」という警告が表示されます。

harpo、lomaxx、およびKobiからの他のいくつかの応答を組み合わせた別の解決策は次のとおりです。

jQuery(document).ready(function(){ 
    var list = $(".object[level]").map(function(){
        return parseInt($(this).attr("level"), 10);
    }).get();
    var max = Math.max.apply( Math, list ); 
    alert(max);
});

2

セレクター

$(".object[level]")

クラスobjectと属性を持つすべてのdom要素を提供しますlevel

次に、.each()メソッドを使用して要素を反復処理し、最大値を取得できます。


$(".object[level=something]") 何かがあなたが探している属性値です
James

0

あなたはできるのjQueryの機能を拡張し、独自の「attrsに」実装を追加します。

次のコード行をJavaScriptファイルに追加します。

jQuery.fn.extend({
    attrs: function (attributeName) {
        var results = [];
        $.each(this, function (i, item) {
            results.push(item.getAttribute(attributeName));
        });
        return results;
    }
});

これで、次を呼び出すことでレベル値のリストを取得できます。

$(".object").attrs("level")
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.