0

我有一系列单元格,当单击这些单元格时,它们会被克隆并附加到一个单独的表中(一行)。当在第二个表格中单击单元格时,它们会返回到它们在上一个表格中的位置(或者更确切地说,它们被删除并且原始单元格淡入淡出。但是我需要第二个表格中的单元格(#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();
});

当您单击它时,我需要运行以上所有内容,但在您可排序时不需要。基本上我希望保持取消点击事件而不是可排序事件。

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

4

1 回答 1

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

于 2013-04-29T18:43:36.033 回答