Jquery / Javascript点击并按住

时间:2013-04-29 17:59:43

标签: javascript jquery jquery-ui click

我有一系列单元格,当点击时克隆并附加到一个单独的表(一行)。当在第二个表中单击单元格时,它们将返回到上一个表中的位置(或者更确切地说,它们将被删除,原始单元格将变为实体。但是我需要第二个表格中的单元格(#answertable.sortable()。我可以将它们移动到查找范围内,但是一旦我放开,原始的点击功能就会被执行并且单元格会消失。

可回收的可排序代码:

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

相关单元格代码(真的fadeOut()位):

$(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();
});

我点击它时需要运行上述所有内容,但在排序时则不需要。基本上我希望hold取消on click事件,但不取消可排序事件。

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

1 个答案:

答案 0 :(得分:1)

如果持续时间小于某个值,即(250ms),您可以计算点击的持续时间并调用淡出功能:

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