我有一张桌子,可以点击扩展/收缩。它工作得很好,但是,有一个问题,有时用户可能想要复制表中的文本,因此他们的行合同(点击)
是否有某种方法可以避免在点击时触发事件,但是如果您按住鼠标和/或标记文字则没有?
示例页面: http://resihop.nu/search?from=&to=&when=&got_car=1&code=
如果你能提供一个例子,我会非常喜欢,我不习惯javascript。 :)
答案 0 :(得分:3)
制作活动mouseup
- 而不是click
。您还可以检查mousedown
和mouseup
之间的时间长度,以决定是否应该处理点击。
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
}
})