문제

테이블의 모든 행을 통해 루프가 필요한 코드를 작성한 다음 각 행에 숨겨진 입력을 확인하여 특정 값이 포함되어 있는지 확인하고 일부 값을 설정하고 행을 숨 깁니다. 서투른 일 수 있지만 효과가있을 수 있습니다. (변수 "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();
});
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top