2013-04-29 64 views
0

我有一系列单元格,单击时被克隆并附加到单行表格(一行)。当在第二个表格中单击单元格时,它们返回到它们在上一个表格中的位置(或者更确切地说,它们被删除并且原始单元格变为实体。但是,我需要第二个表格中的单元格(#answertable.sortable()。移动周围寻找,但只要我一松手,就点击功能原来被执行和细胞消失Jquery/Javascript单击并按住

Answertable排序代码:

$(function() { 
    $("#answertable tr").sortable(); 
    $("#answertable tr").disableSelection(); 
}); 

相关细胞代码(​​位真) :

$(answertablecells).click(function(){ 
    var num = $(this).attr("id"); 
    for(var i=12; i < num.length; i++) { 
     var nums = num.substr(i, i++, i++); 
    }    
    $('#in_answerbox' + nums + "a").fadeTo('fast', 1).removeAttr('id'); 
    $(this).fadeOut('slow').removeAttr('id').remove(); 
}); 

我需要上述所有内容才能在您点击时运行,但不能在您排序时运行。基本上我希望暂停取消点击事件,但不要排序事件。

有什么建议吗?所有帮助赞赏!

回答

1

可以计算点击的持续时间和调用淡出功能,如果持续时间低于某个值,即(250毫秒):

function myfunction(){ 
    var num = $(this).attr("id"); 
    for(var i=12; i < num.length; i++) { 
     var nums = num.substr(i, i++, i++); 
    }    
    $('#in_answerbox' + nums + "a").fadeTo('fast', 1).removeAttr('id'); 
    $(this).fadeOut('slow').removeAttr('id').remove(); 
} 

var longpress = false, startTime, endTime; 

$(answertablecells).on('click', function (e) { 
    if (!longpress) myfunction(); 
}); 

$(answertablecells).on('mousedown', function() { 
    startTime = new Date().getTime(); 
}); 

$(answertablecells).on('mouseup', function() { 
    endTime = new Date().getTime(); 
    longpress = (endTime - startTime < 250) ? false: true; 
}); 

jsfiddle

+0

完美。通过一些上下文特定的编辑现在可以工作。感谢jsfiddle。我想知道,如果setTimeout()也可以在这种情况下使用? – Truvia 2013-04-29 21:14:53

+0

yup它应该可以正常工作,你可以在'if(!longpress){'之后添加它'如果你想在longpress之后执行它,或者在'else {'在shortpress之后执行''if(!longpress){在shortpress之后做些事情} else {在长时间之后做些别的事情}' – razzak 2013-04-29 21:46:18