jQuery : 테이블의 모든 가시 행을 통과합니다.
-
18-09-2019 - |
문제
테이블의 모든 행을 통해 루프가 필요한 코드를 작성한 다음 각 행에 숨겨진 입력을 확인하여 특정 값이 포함되어 있는지 확인하고 일부 값을 설정하고 행을 숨 깁니다. 서투른 일 수 있지만 효과가있을 수 있습니다. (변수 "Zeile"은 첫 번째 행을 포함하고 루프 전에 올바르게 초기화됩니다) :
while (goon) {
var hf = zeile.attr('id');
if (hf) {
hf = document.getElementById(hf.substr(0,hf.length-2) + 'hfMat');
if (hf.value == mid) {
found=true;
goon=false;
zeile.hide();
} else {
cnt +=1 ;
if (cnt<10) {
alert('not found, cnt=' + cnt);
} else {
goon=false;
}
}
}
if (goon) {
zeile = zeile.next('tr');
goon=zeile.length>0;
}
}
좋아, 우선, 4 행 4 document.getElementById(hf...)
패배를 인정하는 것처럼 보이고 아마도 - 그러나 $("#"+hf).val()
그냥하지 않을 것입니다. 정의되지 않은 반품 :(
내가 말했듯이,이 코드는 잘 작동합니다. 그러나 두 줄에 HFMAT 필드에 동일한 값이 포함 된 경우가 있었으며 내 스크립트는 첫 번째 행을 다시 숨길 것인데, 두 번째 행은 계속되어야합니다. "Easy", 나는 다음 행을 처리하기 위해 진술을 개선하고 (끝에서 4 번째 줄) zeile = zeile.next('tr');
에게 zeile = zeile.next('tr:visible');
그러나 jQuery 1.3.2에서는 작동하지 않으며 정의되지 않습니다. 내가 뭘 잘못하고 있죠?
그리고 jQuery의 더 고급 메커니즘 중 일부를 사용하여 지저분한 루핑 없이이 선택을 수행 할 수있는 훨씬 더 좋은 방법이 있어야하지만, 이것들이 저를 넘어서서 두려워합니다. 그러나 나는 몇 가지 아이디어를 보게되어 기쁩니다.)
해결책
단순히 요소를 숨기면 문서 흐름에서 벗어나지 않습니다. 따라서 DOM 쿼리가 계속 찾을 수 있습니다.
실제 HTML을 보지 않으면 서 다음 jQuery 루프로 당신이 달성하려는 일이 더 간단한 방식으로 수행 될 수 있다고 추측 할 수 있습니다.
$("tr input[value=" + mid + "]").each(function () {
this.hide();
});