jQuery - एक वर्ग के तत्वों से एक विशेषता के मूल्यों की एक सूची प्राप्त करें


86

मेरे पास एक वर्ग है .objectजिसमें एक विशेषता है level। मैं levelपृष्ठ पर सभी विभिन्न मूल्यों की एक सूची प्राप्त करना चाहता हूं, ताकि मैं उच्चतम का चयन कर सकूं।

अगर मैं ऐसा कुछ करता हूं:

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

... क्या मुझे उन मूल्यों की एक सूची मिलेगी जो स्तरीय विशेषता के मूल्य हैं? मुझे संदेह नहीं है, लेकिन फिर आप ऐसा कुछ कैसे करते हैं?

नोट: मैं हेरफेर के लिए HTML ऑब्जेक्ट का चयन नहीं करना चाहता हूं क्योंकि यह अधिक सामान्य है, बल्कि मैं विशेषता के मूल्यों का चयन करना चाहता हूं।

संपादित करें: उच्चतम "स्तर" पाने के लिए मैंने ऐसा किया है, लेकिन यह काम नहीं करता है। मैं अब अन्य सुझाई गई विधि की कोशिश करूंगा।

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

alert(highLevel);

5
@ ठाकुर आपको इस प्रश्न के उत्तर के रूप में इनमें से एक का चयन करना चाहिए
नाथन कोप

जवाबों:


195

$(".object").attr("level")केवल पहले .objectतत्व का गुण लौटाएगा ।

यह आपको सभी levels की एक सरणी मिलेगा :

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

6
क्या करता .get()है?
युजी 'टमिता' टमिता

21
@Yuji - getjQuery ऑब्जेक्ट को एक नियमित सरणी में कनवर्ट करता है।
कोबी

@ मनदीपजैन: किसी एक उत्तर को 'सही' कैसे कहते हैं? यह एक 'स्वीकृत' के रूप में चिह्नित नहीं किया जा सकता है, लेकिन 100 से अधिक लोगों ने इसे 'उपयोगी' माना है, और यह मेरे लिए काफी अच्छा है!
माइकल शेपर

1
बहुत बढ़िया जवाब। मेरे लिए थोड़ा और अधिक सहज / क्लीनर .get()पहले सरणी के लिए है, फिर थोड़ा सा सादे जावास्क्रिप्ट के साथ सरणी बनाने के लिए .map()प्लस एरो फंक्शन (ब्राउज़र सपोर्ट: caniuse.com/#search=arrow ) का उपयोग करें:$(".object").get().map(x => x.getAttribute('level'));
elPastor

27

एक सरणी में विशेषता मान प्राप्त करते हुए, प्रश्न का पहला भाग। इस प्रश्न को देखें

jQuery सूची से img स्रोत विशेषताएँ प्राप्त करें और सरणी में पुश करें

आप कहेंगे

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

सवाल का दूसरा हिस्सा, आप उच्चतम मूल्य प्राप्त करने के लिए इस तकनीक का उपयोग कर सकते हैं

var maxValue = Math.max.apply( Math, levelArray );

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" मिलता है जो मेरे लिए सतर्क है।

यहाँ एक और उपाय है, जिसमें हार्पो, लोमैक्स और कोबी के अन्य उत्तरों के कई संयोजन हैं:

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और एक विशेषता के साथ सभी प्रमुख तत्व दे देंगे level

तब आप उच्चतम मूल्य प्राप्त करने के लिए तत्वों पर पुनरावृति करने के लिए सिर्फ .each () विधि का उपयोग कर सकते हैं


$(".object[level=something]") जहां कुछ है जो आप के लिए देख रहे हैं विशेषता मूल्य
जेम्स

0

आप जेकरी की कार्यक्षमता का विस्तार कर सकते हैं और अपने स्वयं के 'एट्र्स' को जोड़ सकते हैं।

अपनी जावास्क्रिप्ट फ़ाइल में कोड की निम्नलिखित पंक्तियाँ जोड़ें:

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

अब आप कॉल करके स्तर मानों की सूची प्राप्त कर सकते हैं:

$(".object").attrs("level")
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.