【问题标题】:Check for last iteration in jQuery.each检查 jQuery.each 中的最后一次迭代
【发布时间】:2017-01-16 13:12:29
【问题描述】:

我们如何检查jQuery.each() 循环的最后一次迭代?我的循环正在迭代来自$.ajax 请求的对象。

jQuery.ajax({
  url: "<?php echo $this->getUrl('xs4arabia/index/getFetchrOrderLogs/'); ?>",
  type: "GET",
  data: {
    tracking_id: tracking_id
  },
  dataType: "json",
  success: function(data) {
    jQuery.each(data, function(key, value) {
      console.log(value);
    })
  }
});

【问题讨论】:

    标签: javascript jquery ajax each


    【解决方案1】:

    传递给each() 处理函数的第一个参数是数组中当前元素的索引(尽管您当前将其命名为key)。您可以将其与数组的长度进行比较以找出您当前的位置:

    $.each(data, function(index, value) {
      var isLastElement = index == data.length -1;
      if (isLastElement) {
        console.log('last item')
      }
    
      console.log(value);
    };
    

    这是使用原生 forEach() 方法的另一个示例:

    data.forEach((val, i) => {
      var isLastElement = index == data.length -1;
      if (isLastElement) {
        console.log('last item')
      }
    
      console.log(value);
    });
    

    【讨论】:

      【解决方案2】:

      每个函数的第一个参数等于索引。

      因此,您可以将索引与数据的长度进行比较。

      看看这个使用 div 标签的例子:

      $(document).ready(function(){
      	var len = $('div').length;
      	$('div').each(function(index){
        	if (index === (len - 1))
        		alert('Last index');
        });
      })
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
      <div>1</div>
      <div>2</div>
      <div>3</div>

      这是另一个使用包含数组属性的对象的示例:

      var data = {
      	myArray:[1,2,3]
      }
      
      $(document).ready(function(){
      	var len = data.myArray.length;
      	$.each(data.myArray,function(index,value){
        	if (index === (len - 1))
        		alert(index);
        });
      })
      &lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

      【讨论】:

      • 但我不在 div 中工作,我在数组中有对象成功。
      • 我添加了另一个使用 JavaScript 对象的示例。
      【解决方案3】:

      可以查看数据的长度,和key比较(注意第一个key是0)

       jQuery.ajax({
              url: "<?php echo $this->getUrl('xs4arabia/index/getFetchrOrderLogs/'); ?>",
              type: "GET",
              data: {tracking_id: tracking_id},
              dataType: "json",
              success: function (data) {
              var arrLength = data.length;
              jQuery.each(data, function (key, value) {
                    if( key == arrLength - 1 ) {
                        /* this is the last one */
                    }
                    console.log(value);
              },
       })
      

      【讨论】:

        【解决方案4】:

        每个传递到您的功能键和值。根据数据长度检查 key(index)。

        if (key == data.length- 1) {
                      console.log('Last field');
                  }
        

        【讨论】:

          【解决方案5】:

          虽然其他答案都是正确的,但我个人最喜欢这种方法,只需编写自己的计数器:

          var counter = 0; 
          	
          $(yourselector).each(function(index,element){
          			
                  counter++; 
          
                  if( counter == $(yourselector).length )
                  {
                      // Last Element
                  }
                  else
                  {
                     // Not last Element
                  }
          			
           });

          【讨论】:

            猜你喜欢
            • 2015-03-29
            • 1970-01-01
            • 2011-08-30
            • 2010-10-03
            • 1970-01-01
            • 1970-01-01
            • 2018-02-06
            • 1970-01-01
            • 2016-03-21
            相关资源
            最近更新 更多