2012-01-28 26 views
6

Tôi có mã sau đây mà tôi đang đi qua các cột bảng và nếu cột cuối cùng của nó tôi muốn nó làm điều gì đó khác. Ngay bây giờ nó cứng mã hóa nhưng làm thế nào tôi có thể thay đổi để nó tự động biết cột cuối cùng của nónhận được lần lặp cuối cùng trong jquery mỗi

$(this).find('td').each(function (i) { 
    if(i > 0) //this one is fine..first column 
    { 
     if(i < 4) // hard coded..I want this to change 
     { 
      storageVAR += $(this).find('.'+classTD).val()+','; 
     } 
     else 
     { 
      storageVAR += $(this).find('.'+classTD).val(); 
     } 
    } 
}); 
+1

Vì vậy, 'td' thẻ được sử dụng trong mỗi hàng, bạn có muốn td cuối cùng, hoặc td cuối cùng trong mỗi hàng? – loganfsmyth

+0

Tôi đến đây từ google tìm kiếm một câu trả lời cho câu hỏi tiêu đề, đó là chung chung hơn những gì OP cần thiết ... Vì vậy, làm thế nào để biết cái nào là lần lặp cuối cùng của $ .each (một cái gì đó, chức năng (...) {...}); khi 'something' là một đối tượng, thay vì một mảng? –

Trả lời

10

Nếu bạn muốn truy cập vào chiều dài bên trong .each() gọi lại, sau đó bạn chỉ cần lấy độ dài trước để nó có sẵn trong phạm vi của bạn.

var cells = $(this).find('td'); 
var length = cells.length; 
cells.each(function(i) { 
    // you can refer to length now 
}); 
+0

var total = $ (this) .find ('td'). Length; – Autolycus

+1

@Autolycus - nhưng không có điểm nào trong việc tính toán lại tất cả khi bạn cần bộ chọn cho các mục đích sử dụng khác - cũng có thể lưu đối tượng jQuery để bạn có thể sử dụng nó nhiều lần. – jfriend00

-2

Nếu tất cả các bạn muốn là cột cuối cùng, bạn có thể sử dụng

$(this).find('td:last') 

Nếu bạn muốn làm điều với các cột khác, đi cho

$(this).find('td:last').addClass("last"); 
$(this).find('td').each(function() { 
    if ($(this).hasClass("last")) { 
     // this is the last column 
    } else { 
     // this isn't the last column 
    } 
}); 

bạn có thể sử dụng data() thay vì addclass() nếu bạn cảm thấy thoải mái với điều đó.

Nếu tất cả các bạn muốn làm là không có một dấu phẩy ở cuối của chuỗi của bạn, bạn có thể chỉ chặt nó đi sau đó:

storageVAR = storageVAR.substr(0, (storageVAR.length - 1); 
6

Dường như mục tiêu của bạn là tạo danh sách giá trị được phân tách bằng dấu phẩy, tại sao bạn không thu thập giá trị và sử dụng phương pháp mảng 'tham gia'?

var values = [] 
$(this).find('td .' + classTD).each(function(i) { 
    if (i > 0) values.push($(this).val()); 
}); 
storageVAR = values.join(','); 
1

Something như thế này nên làm điều đó:

var $this = $(this), 
    size = $this.size(); 

$this.find('td').each(function (index) { 

    // FIRST 
    if(index == 0) 
    { 

    } 
    // LAST 
    else if(index == size) 
    { 

    } 
    // ALL THE OTHERS 
    else 
    { 

    } 

}); 
+1

Cuối cùng sẽ là 'index === size-1'. – jeremy

Các vấn đề liên quan