2012-05-18 2 views
0

테이블이 있고 그 중 일부에 유효성 검사를 실행해야하는 입력 필드가 있습니다. 확인 후 공백 입력란에 클래스 .mandatory을 첨부합니다. 이제 나중에 .mandatory 아이들을 가진 td을 반복해야하고 테이블의 해당 th 요소에서 해당 text/html을 가져와야합니다. 가장 좋은 방법은 td의 색인을 찾아 올바른 th을 얻는 것입니다.하지만 td의 색인을 효율적으로 얻는 방법을 모르겠습니다. 나는jQuery each() 루프에서 현재 요소의 인덱스를 가져 오는 방법은 무엇입니까?

$('.mandatory').each(function(){ 
var ind = curr_tr.find('>td').index($(this).closest('td'));//curr_tr is a reference to the current tr I am working with 
var txt = $('th:eq('+ind+')').html(); 
}) 

처럼 뭔가를 시도하지만 이것은 비효율적 인 것, 그리고 .mandatory 필드 중 일부는 그냥 예를 들어이 확인 td

답변

1

당신은 .closest("td")와 현재의 입력 요소의 부모 TD를 얻을 수 있습니다, 그리고 당신은 .index() method와 (그 형제 TD 요소를 기준으로) 그 TD의 인덱스를 찾을 수 있습니다

$('.mandatory').each(function(){ 
    var ind = $(this).closest('td').index(); 
    var txt = $('th:eq('+ind+')').html(); 
}); 

당신은 필요하지 않습니다를 현재 tr에 대한 참조를 수행하고이 목적을 위해 매개 변수를 .index()에 전달하지 마십시오.

아니라 모든 입력을 반복 .each()를 사용하는 것보다, 질문의 마지막 문장에 따라 중첩 된 테이블 수, 당신은 필수 입력을 포함하는 TDS를 반복하는 데 사용할 수 있습니다

$('#yourtable > tr > td').has('.mandatory').each(function(){ 
    // "this" is the td 
    var ind = $(this).index(); 
    var txt = $('#yourtable th:eq('+ind+')').html(); 
}); 

.has() method을 사용하여 일치하는 td 요소 집합을 자손 ".mandatory"요소가있는 요소로 줄입니다.

(물론이 일치하는 모든 요소 내에서 인덱스가없는 현재 행 내에 있기 때문에 당신이) 다른 답변에서와 같이 .each() 콜백 (의 인덱스 매개 변수를 사용할 수 없습니다 어느 쪽이든.)

0

내에서 더 테이블에 중첩 된 경우 작동하지 않습니다

$.each(['first','second'], function(index, value) { 
     alert(index + ': ' + value); 
    }); 
0

인덱스 및 요소가 콜백 함수에 제공됩니다.

사용 :

$('.mandatory').each(function(i){ 

또는 :

$('.mandatory').each(function(i, e){ 

이 당신에게 i 매개 변수의 인덱스를 제공하고 e 매개 변수의 요소를 선택적으로 할 것이다. 원한다면 매개 변수를 다른 사람에게 자연스럽게 줄 수 있습니다.

1

$.each()는 사용할 수 indexelement 매개 변수가 있습니다

$('.mandatory').each(function(index, el){ 
    var ind = curr_tr.find('>td').index($(this).closest('td')); //curr_tr is a reference to the current tr I am working with 
    var txt = $('th:eq('+ind+')').html(); 
}) 

그러나, 문제를 해결하는 가장 좋은 방법 같은 소리하지 않습니다 index를 사용하여. DOM을 구성하는 방법을 알 수 있도록 HTML을 게시 할 수 있습니까? closest(), parent() 등을 조합하여 사용하면 더 좋은 해결책이 될 수 있습니다.

+0

인덱스 것 색인 '을 제공하십시오.의무적으로 '컨테이너가 아니라'td '이므로 사용할 수 없다고 생각합니다. – Bluemagica

관련 문제