2013-04-29 66 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