jquery - получить элемент с наибольшим значением атрибута

0

Как я могу сделать, чтобы элемент с именем атрибута был равен "temp" и с наивысшим значением атрибута?

XML

<el>
   <em name="temp" value="5">
      <data>nok</data>
   </em>
   <em name="other" value="10">
      <data>nok</data>
   </em>
   <em name="temp" value="8">
      <data>ok</data>
   </em>
</el>

Фактический код, который у меня есть:

Jquery

var name= 'temp';

$xml.find("em[name=" + name + "]").each(function() {
    $(this).find( "data" ).each(
        function(){
            alert($(this).text());
        } 
    );                             
});
Теги:
parsing

3 ответа

0
Лучший ответ

Попробуй это:

 var valArray = [];
 $xml.find('em[name=temp]').each(function(){
   valArray.push(parseInt($(this).attr('value'), 10));
 })
 valArray.sort(function(a, b) { return a - b })

 valArray[0] // lowest
 valArray[valArray.length - 1] // highest'

Рабочая демонстрация

Справка

  • 0
    Благодарю. Я отредактировал свой пост, потому что я хочу получить только элемент с именем attribut равным 'temp'. Тогда я хочу, чтобы в качестве возврата также был проанализирован элемент.
  • 1
    @Jils: я обновил для получения для имени = темп. что еще хочешь.
Показать ещё 2 комментария
1

Попробуйте это, комментарии говорят сами за себя, я надеюсь...

 // var for the highest value
 var highestval = 0;

 // the element we are seeking
 var highestvalelement;

 // loop through the em elements
 $xml.find("em[name=" + name +"]").each(
    function()
    {
       // the value attribute of this element
       elval = $(this).attr('id')

       // is it the highest
       if(elval >= highestval)
       {
           // set the highest value
           highestval = elval;

           // store the object
           highestvalelement = $(this);
       }         
    }
 );

 // highestvalelement will contain the em elemnt with the highest value
  • 0
    Это тоже правильно, но я думаю, что решение @Milind лучше с точки зрения производительности ... Я не знаю, на самом деле :)
0
var name= 'temp';
$xml.find("em[name=" + name + "]").each(function() {
$(this).find( "data" ).each(function(){
                                    alert($(this).innerhtml());
                                 });   
});

И для лучшего ответа, пожалуйста, сообщите нам об ошибке.......

  • 0
    ошибки нет, я просто не нашел решения, чтобы получить то, что я хочу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню