Jquery点击事件但不是按住/标记文本事件

时间:2010-12-15 22:04:12

标签: javascript jquery

我有一张桌子,可以点击扩展/收缩。它工作得很好,但是,有一个问题,有时用户可能想要复制表中的文本,因此他们的行合同(点击)

是否有某种方法可以避免在点击时触发事件,但是如果您按住鼠标和/或标记文字则没有?

示例页面: http://resihop.nu/search?from=&to=&when=&got_car=1&code=

如果你能提供一个例子,我会非常喜欢,我不习惯javascript。 :)

2 个答案:

答案 0 :(得分:3)

制作活动mouseup - 而不是click。您还可以检查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
});

答案 1 :(得分:1)

你也可以像这样引用第一个TR

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

sso只能点击顶行,让偶数tr的事件免费。

另一个解决方案是做鼠标并检查文本选择如下:

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

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