2013-03-21 3 views
1

나는 여기에 jQuery 코드를 가지고 :, 그렇지 않으면 작동합니까?

jQuery(document).ready(function() { 
    $("td").click(function (e) { 
     var chk = $(this).closest("tr").find("input:checkbox").get(0); 

     if (e.target != chk) { 
      chk.checked = !chk.checked; 
     } 

     if ($(this).closest("tr").find("input:checkbox").is(":checked")) { 
      $(this).closest("tr").css("font-weight", "bold"); 
     } else { 
      $(this).closest("tr").css("font-weight", ""); 
     } 
    }); 
}); 

내가이 확인란 많이 클릭에 어떤 td에 체크 그리고 추가 CSS를 볼 수 있듯이.

잘 작동합니다. 내가 원하는 것은 상자가 많은 select 상자가있는 것과 같은 형태입니다.
뭔가를 선택하려고하면 기능이 작동합니다.
확인란을 선택하지 않으려면 선택 상자를 클릭하여이 기능을 비활성화하고 싶습니다.

답변

1

당신은 단지 대상이 선택 요소 내부 선택하거나 어떤 경우 옵션과 같이 확인할 수 있습니다 : 만약 내가 제대로 이해하고

$(function() { 
    $("td").on('click', function (e) { 
     if (! $(e.target).closest('select').length) { 
      var tr = $(this).closest("tr"), 
       chk = tr.find("input[type='checkbox']").get(0); 
      if (e.target != chk) { 
       chk.checked = !chk.checked; 
      } 
      if (tr.find("input[type='checkbox']").is(":checked")) { 
       tr.css("font-weight", "bold"); 
      } else { 
       tr.css("font-weight", ""); 
      } 
     } 
    }); 
}); 
+0

감사합니다. 잘 작동합니다.^_ ^ –

0

, 당신은 마우스 클릭 무엇을 테스트 할, 그리고 그것은을 한 경우 그런 다음 확인란을 변경하지 마십시오.

이벤트 속성에서 가져올 수 있어야합니다. 예를 들어 :

if (!$('#' + e.target.id).hasClass('mySelectBox')){ 
    //your code... 
} 

더 간결 방법이있을 수 있습니다, 나는 테스트를하지 않은,하지만이 시도 :

if (e.target != 'select'){ 
    //your code.. 
} 

업데이트 : 네는 무엇 말했다 @adeneo!

관련 문제