2014-02-28 2 views
0

이것은 내가 가지고있는 코드입니다. 지금은 최상위 행만 숨기고 한 번 작동합니다 (이유를 모르겠다). 나는 Delegate (다른 StackOverflow 응답에서 빌리기)를 사용하여 그것을 수행했으며, 디자인 상으로는 세 번째 셀을 클릭하면 숨 깁니다. 솔직히 말해서, 셀을 클릭하여 솔루션을 숨기면별로 신경 쓰지 않습니다.JQuery를 사용하여 클릭하여 하나씩 숨기려면 반복적으로 테이블 행을 숨기려면 어떻게해야합니까?

자바 스크립트 :

$(function() { 
    $("#hideme").delegate("td:nth-child(3)", "click", function() { 
    $(this).closest("tr").hide(); 
    }); 
}); 

HAML :

%tbody 
    - @assigned.each do |index,ticket| 
     %tr{:class => ticket["style"], :id=>"hideme"} 
     %td= ticket["hour"] 
     %td= ticket["domain"] 
     %td= ticket["status"] 
     %td= ticket["timer"] 
     %td= link_to_zenid ticket["id"] 
     %td= link_to_admin ticket["asker"],ticket["domain"] 
     %td= ticket["subject"] 

감사합니다; 어떤 도움을 주시면 감사하겠습니다. 나는 다른 Stack Overflow 해답을 보았지만 아직 일치하는 것을 찾지 못했다.

+1

무엇 단지 $ ("테이블 TR")에 ("클릭", 기능() {$을하는 약. (this) .hide();}); 여러 개의 표가있는 경우 $ ("table # tableID tr")를 사용하십시오. – Dave

+0

감사합니다! 그것은 나를 위해 일합니다. 나는 그 대답에 감사 드린다. – jumar

답변

1

불필요한 메모리를 소비하므로 모든 단일 테이블 행에 이벤트를 첨부 할 필요가 없습니다. 요 이벤트가 대신 버블 링에 의존하고, 전체 테이블에 하나 개의 이벤트를 첨부 할 수 있습니다 :

$('table').on('click', 'tr', function(event) { $(event.target).hide(); }); 
1
$("table tr").click(function(e){ 
$(this).hide(); 
e.StopPropogation(); //stop bublling of events, or can just return false 
}) 
관련 문제