2014-12-30 2 views
0

단일 클릭 이벤트가 두 번 클릭 이벤트를 계속 방해하여 두 번 클릭해도 단일 클릭 이벤트가 호출되는 문제가 있습니다. 나는 SO에 대한 솔루션을 이어 후더블 클릭을 방해하는 단일 클릭. 어떻게 해결할 수 있습니까?

grid.bind('change', function() { 
    SearchPSelected(); 
}); 

$('#PGrid').delegate('tbody>tr', 'dblclick', function(e) { 
    SearchPSelected(); 
    GotoNextView(); 
}); 

여기 내 코드입니다 :

가 여기에 지금에 볼 수있는 솔루션을하기 전에 내 코드의 시도 솔루션을

grid = $('#PGrid').data('kendoGrid'); 

var DELAY = 700, 
    clicks = 0, 
    timer = null; 

grid.on("click", function(e) { 
     clicks++; //count clicks 

     if (clicks === 1) { 
      timer = setTimeout(function() { 

       grid.bind('change', function() { 
        SearchPSelected(); 
       }); //perform single-click action  

       clicks = 0; //after action performed, reset counter 
      }, DELAY); 
     } else { 
      clearTimeout(timer); //prevent single-click action 

      $('#PGrid').delegate('tbody>tr', 'dblclick', function(e) { 
       SearchPSelected(); 
       GotoNextView(); 
      }); //perform double-click action 

      clicks = 0; //after action performed, reset counter 
     } 
    }) 
    .on("dblclick", function(e) { 
     e.preventDefault(); //cancel system double-click event 
    }); 

을 아무것도로 (호출되지됩니다 방화 광에서 검사) 왜 그런지 모르겠습니다. 나는 아직도 상대적으로 js (선택의 언어가 아님)에 익숙하기 때문에 뭔가를 놓칠 수 있습니까?

+4

두 번 클릭하면 상관 없습니다. – epascarello

+0

http://stackoverflow.com/questions/6330431/jquery-bind-double-click-and-single-click-separately/7845282#7845282 – epascarello

+2

오른쪽 - 동일한 요소에 대해 '클릭'과 'doubleclick'사용하기 만하면됩니다. 웹 사용자 인터페이스에서 잘 작동합니다. – Pointy

답변

0

문제점을 파악했습니다. 수정 사항은 다음과 같습니다. 위의 솔루션 내에서 click 및 dblclick 메서드의 중복성을 제거해야했습니다.

 var DELAY = 700, 
     clicks = 0, 
     timer = null; 

     $('#PGrid').delegate('tbody>tr','click', function (e) { 
      clicks++; //count clicks 

      if (clicks === 1) { 
       timer = setTimeout(function() { 

         SearchPSelected(); 

        clicks = 0; //after action performed, reset counter 
       }, DELAY); 
      } else { 
       clearTimeout(timer); //prevent single-click action 

        SearchSelected(); 
        GotoNextView(); 

       clicks = 0; //after action performed, reset counter 
      } 
     });