跳过jquery中$ .each的最后一个索引

时间:2015-09-10 01:57:59

标签: javascript jquery

http://jsfiddle.net/jxzwy4d6/

<tr>
    <td>abc</td>
    <td>Education</td>
    <td>abc customer</td>
    <td>123</td>
    <td>abc@gmail.com</td>
    <td>
        <button class="edit_record">Edit</button>
    </td>
</tr>

我的JS

$(function () {
    $('body').on('click', '.edit_record', function (e) {
        $.each($(this).closest('tr'), function (i, obj) {
            //get all td text except last one


        });

    });

});

我试过

if(i != 5){console.log($(this).find('td').text());}但它不起作用,包括最后一个编辑值。

3 个答案:

答案 0 :(得分:3)

另一种方法是针对按钮的父母的兄弟姐妹......不需要像这样对索引大惊小怪

$('body').on('click', '.edit_record', function (e) {
    $(this).parent().siblings().each(function(){
         console.log( $(this).text() );
     });
});

参考siblings() docs

答案 1 :(得分:2)

您的代码永远不会到达索引5,因为您循环遍历tr元素。不是它的td元素,因为表行只存在1个元素,使用下面的代码:

$.each($(this).closest('tr').find('td'), function(i, obj) {
 // i right now having value 0 - 5(this is your last index)
});

更新了DEMO

答案 2 :(得分:1)

您可以使用.parent(), .parent('td') or .closest('td')获取该按钮的父级,然后找到.siblings,这将是td个,但是包含该按钮的.each()。而且,您可以使用jQuery.each()代替 $(this).closest('td').siblings().each(function(i, td) { //The last td is excluded here as only the siblings are iterated. }); 。:

$(function() {
  $(document).on('click', '.edit_record', function() {
      $(this).closest('td').siblings().each(function(i, td) {
          console.log( td );
      });
  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table><tbody>
  <tr>
    <td>abc</td>
    <td>Education</td>
    <td>abc customer</td>
    <td>123</td>
    <td>abc@gmail.com</td>
    <td>
        <button class="edit_record">Edit</button>
    </td>
</tr>
  </tbody></table>
    AsyncImageLoader.sharedLoader().cancelLoadingURL(cell.rideImageView.imageURL)
    cell.rideImageView.image = UIImage(named: "Unloaded")
    cell.rideImageView.imageURL = NSURL(string: ride.rideImageSmall!)