2010-12-15 2 views
2

나는 클릭 할 때 테이블을 확장/축소합니다. 그러나 한 가지 문제가 있습니다. 때로는 사용자가 테이블의 텍스트를 복사하여 회선 계약 (클릭에 따라)을 할 수도 있습니다.Jquery 클릭 이벤트. 텍스트 이벤트를 보류/표시하지 않습니다.

클릭 할 때 이벤트가 트리거되는 것을 피할 수있는 방법이 있습니까? 마우스를 누르고 있으면 텍스트를 표시 할 수 있습니까?

샘플 페이지 : http://resihop.nu/search?from=&to=&when=&got_car=1&code=

당신이 예를 공급할 수 있다면 훨씬 appriciate 것, 내가 자바 스크립트를 사용하지 않는 것을입니다. :)

답변

3

click이 아닌 mouseup 이벤트를 만듭니다. mousedownmouseup 사이의 시간을 확인하여 클릭 처리 여부를 결정할 수도 있습니다.

this 같은 뭔가 트릭해야

:

var lastMouseUp = 0, lastMouseDown = 0; 
$('tr').bind('mouseup mousedown', function(e){ 
    var ms = new Date().getTime(); 
    e.type == 'mousedown' ? lastMouseDown = ms : lastMouseUp = ms; 

    if(e.type != 'mousedown' && (Math.abs(lastMouseUp - lastMouseDown) < 300)) 
     console.log(Math.abs(lastMouseUp - lastMouseDown) + ' process click') // valid click 
}); 
+0

일, 니스 전술 :) 어떻게됩니까? – RobertPitt

+0

@RobertPitt - 이것이 어떻게 '클릭'상황과 다른 문제인지는 알 수 없습니다. –

+0

그의 근원의 더 많은 것을 읽은 후에 참으로 나는 문제점을 지금 완전하게 봅니다. – RobertPitt

1

당신은 또한 그냥 ... 맨 윗줄을 클릭 할 수 있도록

$('.generals .odd').click(/*...*/).css("cursor","pointer"); 

SSO처럼 처음 TR을 참조 할 수 있습니다를, tr 님의 이벤트는 무료입니다.

다른 솔루션과 같이 텍스트 선택을 모르기 때문에 mouseUp을하고 확인하는 것입니다 : 그 증거를 해당하지 않지만 사용자를 두 번 클릭 모두를 선택하는 경우

$('tr').mouseup(function(){ 
    selection = document.getSelection ? document.getSelection() : document.selection.createRange().text; 

    if(!selection) 
    { 
     //carry on to de-expand 
    } 
}) 
+0

아, 작동하지 않습니다. :/ – Himmators

+0

왜 그렇지 않습니까? – RobertPitt

관련 문제