如何使用jQuery查找具有最大数据项的span

How to find span with biggest data-item using jQuery

本文关键字:数据项 span 何使用 jQuery 查找      更新时间:2023-09-26

我有一个div,里面有span。有data-item attr。如何找到具有最大data-item attr的div。它们是从0开始的数字。例如:

<div class="wrapper">
  <span data-num="0">text</span>
  <span data-num="1">text</span>
  <span data-num="2">text</span>
  <span data-num="3">text</span>
</div>

Updated:这是我代码的一部分,它是关于上传文件和其中一个输入字段是多个。我在一个div中显示了文件的图像名称。使用应该添加多个文件,所以我需要找到最大的data-num并为下一个文件增加它。

function getFiles(document, window, index) {
  var inputs = document.querySelectorAll( '.app-file' );
  input.addEventListener( 'change', function( e )
   {
     var fileName = '';
     var num = 0;
    
    if( this.files && this.files.length > 1 || $(this).next().next().html()) {
                    var fileName = [];
                    for (var i = 0; i < this.files.length; ++i) {
                        fileName.push(this.files.item(i).name);
                        var comma = '';
                        if($(this).next().next().html()) {
                            comma = ',';
                        }
                        divName.innerHTML = divName.innerHTML + comma + '<span class="image_name" data-num="'+num+'">' + this.files.item(i).name + '</span><span class="glyphicon glyphicon-remove remove-file" data-toggle="tooltip" data-placement="top" title="Remove"></span>';
                        num++;
                    }
                } else {
                    fileName = e.target.value.split('''').pop();
                    divName.innerHTML = '<span class="image_wrapper"><span class="image_name" data-num="'+num+'">' +fileName + '</span><span class="glyphicon glyphicon-remove remove-file" data-toggle="tooltip" data-placement="top" title="Remove"></span></span>';
                    var maxIndexItem = $.makeArray($('#wrapper [data-num]')).reduce(function(result, item) {
                        return $(item).data('num') > $(result).data('num') ? $(item) : result;
                    });
                    alert(maxIndexItem.text());
                }
    });
  
  
  
  
  
  
  
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  <div class="file-name" data-input="corporate_document" id="corporates"></div>

HTML

<div class="wrapper">
  <span data-num="0">text1</span>
  <span data-num="1">text2</span>
  <span data-num="2">text3</span>
  <span data-num="3">text4</span>
  <span>text5</span>
  <span data-num="">text6</span>
</div>

JS

$(document).ready(function(){
    var arr = [];
        $(".wrapper span").each(function(){
        var dataNum = $(this).data("num");
        if (dataNum != null) {
            arr.push(dataNum);
        }
    }).promise().done( function(){
      var max = Math.max.apply(Math, arr);
     alert( $(".wrapper").find("[data-num=" + max + "]").text());
    } );
});

参考Fiddle

我认为这段代码可以帮助你:

var maxIndexItem = $.makeArray($('.wrapper [data-num]')).reduce(function(result, item) {
  return $(item).data('num') > $(result).data('num') ? $(item) : result;
});
alert(maxIndexItem.text());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="wrapper">
  <span data-num="0">text 0</span>
  <span data-num="1">text 1</span>
  <span data-num="2">text 2</span>
  <span data-num="3">text 3</span>
</div>