2013-08-03 3 views
0

체크 박스가 선택된 양식에서 내 html 테이블의 행을 삭제하려고합니다. 여기 jQuery를 사용하여 조상 트리를 삭제할 수 없습니다.

<table> 
     <tr class="row"> 
      <td><input type="text"></td> 
      <td><input type="checkbox" value="Delete" name="foo"/></td> 
     </tr> 
     <tr class="row"> 
      <td><input type="text"></td> 
      <td><input type="checkbox" value="Delete" name="foo"/></td> 
     </tr> 
</table> 
<input type="button" id="btnDelete" value="Remove Selected"/> 

내 JQuery와 스크립트입니다 : 가 여기 내 HTML 인 btnDelete을 클릭에 지금

$(function() { 
     $('#btnDelete').on('click', function() { 
      ; 
      $('input[name=foo]').each(function (i, obj) { 

       if (obj.checked) { 
        alert("clicked!!" + i + " " + jQuery.type(obj)); 
        obj.parents().eq(1).empty(); 
       } 
      }); 
     }); 

    }); 

경고가 할아버지 요소를 됐네요 같이, 스크립트 (즉 <tr>를)입니다 호출 자식이 삭제되면서 비워지지 않습니다. 따라서 병원성 선이 될 것으로 보인다 :

obj.parents().eq(1).empty(); 

그래서 어떻게 그 누구의 체크 박스를 체크 모든 자식 노드와 함께 테이블 행 (. 즉 <tr>)을 제거해야합니까?

답변

3

당신은

$(function() { 
    $('#btnDelete').on('click', function() { 
     $('tr').has('input[name=foo]:checked').remove(); 
    }); 

}); 
+0

'.has ('input [name = foo] : checked')'로 변경하십시오. - 반드시 내 upvote를 얻으십시오. :) –

+0

그래, 고마워! 그거 했어. –

+0

나를 위해 또한 작동합니다! 그리고 꽤 간단합니다. 그래서 나는 upvote.Thanx로 당신의 대답을 받아들입니다! – rahulserver

2

왜 간단하게이 시도하지 $(obj).closest('tr').empty(); (감사에서 nnnnnn)를보십시오 : http://jsfiddle.net/H9WL7/

$(function() { 
    $('#btnDelete').on('click', function() { 
     $('input[name=foo]').each(function() { 
      if ($(this).is(":checked")) { 
       $(this).closest('tr').empty(); 
      } 
     }); 
    }); 
}); 
+0

$('tr').has('input[name=foo]:checked').remove(); 

귀하의 코드가 줄어들 것처럼() 함수 .has를 시도 할 수는 올바른 보이지만 작동하지 않습니다! – rahulserver

+0

@rahulserver 제 편집을보세요. –

+0

작동하지 않는 행은'obj ... '대신'$ (obj) ...'이어야합니다. – nnnnnn

1

obj 변수는 DOM 요소에 대한 참조입니다, 그것은 jQuery를 객체 아니다. 이것을 시도하십시오 :

$(obj).parents().eq(1).empty(); 

... 기존 코드를 작동 시키려면. 또는 더 나은 :

$(obj).closest('tr').remove(); 

.empty() 즉, TR 요소 자체를 제거하지 않습니다, 단지의 모든 콘텐츠를 제거, 그래서 나는 .remove()을 제안한다.

데모 : http://jsfiddle.net/TWL2E/

+0

대답은 고맙습니다. 나를 위해 일했습니다! – rahulserver

+0

하지만 umairP의 대답이 더 나아 졌으므로 나는 대답으로 받아들입니다. 또한 귀하의 답변도 작동하기 때문에, 나는 당신을 위해 upvote !! – rahulserver

관련 문제