2012-12-11 1 views
1

jsFiddle에는 첫 번째 열에 체크 박스가있는 테이블이 있습니다. 테이블 헤더의 마스터 확인란은 클릭 할 때 테이블의 모든 확인란의 상태를 토글하는 것으로 예상대로 작동합니다.체크 박스를 전환하는 핫키가 반대로 수행

나는 마스터 체크 박스를 전환 할 수 시프트 + X에 대한 단축키를 설정했습니다. 바로 가기 키를 사용하여 원하는 동작은 다음과 같습니다

  1. 마스터 확인란이 아이는 각각 자신의 선택 상태가

는하지만 실제로 일어나고있는 것은 반대입니다 마스터 일치하도록 설정 체크 박스

  • 를 토글 ...

    1. 아이는 각각 자신의 선택 상태가 마스터
    2. 마스터에게 맞게 설정 확인란 R 체크 박스가 여기

  • 토글되어이 대향 마스터 체크 박스의 상태를 체크 갖는 자식 체크 박스 결과 해당 코드

    $(".master-select").click(function(){ 
        $(this).closest("table").find("tbody .row-select").prop('checked', this.checked); 
    }); 
    
    function tickAllCheckboxes() { 
        var master = $(".master-select").click(); 
    } 
    
    //using jquery.hotkeys.js to assign hotkey 
    $(document).bind('keydown', 'shift+x', tickAllCheckboxes); 
    

    이다. 왜 그런 일이 일어나는거야? 픽스가 좋을 지 모르지만, 나는 정말로 설명이 끝났으므로 무슨 일이 일어나고 있는지 이해할 수있다.

    +0

    'bind '하는 것은 당신이 생각하는대로하지 않습니다. – jbabey

    +0

    jquery.hotkeys.js 플러그인을 사용하여 jQuery가 작동합니다. 이를 명확하게 편집 한 코드. –

    +0

    아, 그 플러그인에 익숙하지 않아. 알아 둘만한. – jbabey

    답변

    1

    $(".master-select").click(function(){ 
        var checked = true; 
        if(this.checked){ 
         checked = false; 
        } 
        $(this).closest("table").find("tbody .row-select").prop('checked', checked); 
    }); 
    

    문제는 당신이 실제로 clicking the checkbox하지만 triggering it 아니라는 것이다보십시오. 당신이 그것을 실행할 때마다 는 SO 체크 박스의 상태는

    이 코드를보십시오 ..

    당신은 트리거 명시 적으로 수동 클릭에 대한 논리를 처리 할 필요가 있습니다 .. 이전 상태에있을 것입니다 PARAM로`시프트 + x'` 전달

    $(".master-select").click(function(e) { 
        var checked; 
        if (e.isTrigger) { // Logic when click is triggered 
         checked = true; 
         if (this.checked) { 
          checked = false; 
         } 
        } 
        else { // Explicit click 
         checked = this.checked; 
        } 
    
        $(this).closest("table").find("tbody .row-select").prop('checked', checked); 
    }); 
    

    Check Fiddle

    +1

    답변 해 주셔서 감사합니다. 클릭을 트리거하는 것이 클릭과 다르게 작동하는 이유를 알고 싶습니다. –

    +0

    클릭을 트리거하고 있기 때문에 현재 속성을 체크/체크하지 않도록 설정했기 때문입니다 .. 클릭하면 자동으로 처리됩니다 –

    +0

    체크 상자의 현재 상태가 '선택 취소됨'일 때 .. 'shift- x' 상태 일 때 상태는 여전히 '확인되지 않음'상태이므로 즉시 트리거되지 않습니다. 이벤트가 완료되면 변경됩니다. 그러나 수동으로 클릭하면 상태가 바로 반영됩니다. –

    관련 문제