2014-12-01 4 views
0

간단한 반복과 관련하여 조언이 필요합니다.테이블 셀을 반복하고 배열에 데이터를 삽입하십시오.

나는 여러 개의 .termeknev 요소를 가지고 있습니다. 그들 중 일부는 내부에 간단한 텍스트가 있습니다 (그들은 <td> 요소입니다), 그 중 일부는 <input> 요소입니다. 유형이 무엇이든 배열의 텍스트/값이 필요합니다.

이 내 현재 코드입니다 :

$('.termeknev').each(function() { 
    if ($(this).val() === "") { 
     termekek.push($(this).text()); 
    } else { 
     termekek.push($(this).val()); 
    } 
}); 

하지만 그렇지 꽤 찾을 수 있습니다. 이 클리너를 만들거나 단순하게 만들 수있는 방법이 있습니까?

+0

각 변수에서이 변수는 DOM 개체가됩니다. '$ .each (idx, obj)'를 사용하고 루프 내에서'$ (obj) '로 객체에 접근하십시오. – vaso123

+0

그것은 깨끗하고 간단합니다. 결합하려는 인터페이스가 다르므로 적절한 인터페이스를 사용해야합니다. –

+0

$ (this) .val() 대신 DOM 메서드 this.value를 사용하는 방법에 대해 if 조건은 다음과 같습니다. if (this.value === "") – jyrkim

답변

3

val()은 양식 컨트롤에만 사용되므로 요소 유형을 테스트하는 것이 좋습니다. valuetd이면 undefined이되어 현재 논리를 버릴 수 있습니다.

$('.termeknev').each(function() { 
    if ($(this).is(':input') { /* pseudo selector will return any input, select, textarea etc */ 
     termekek.push($(this).val()); 
    } else { 
     termekek.push($(this).text()); 
    } 
}); 
관련 문제