我正在使用最后一行4个按钮的数据表......当我点击第二个按钮时我需要获得正常的click()事件,当我按下长按(比如1秒)我需要点击长按() event ...使用这段代码工作得很好,但是当我开始点击表格时,它会触发长点击()事件,这样我怎样才能启用click()和长按()evenet only on button:
<button type="button" id="row-restart" class="btn btn-success row-restart" title="Restart"><i class="fa fa-cogs-refresh fa-2x"></i></button>
添加于:
table#basicDataTable -> tbody -> tr#15 -> td -> button#row-restart
/ * RESTART - 服务器行长按* / var pressTimer;
$('#basicDataTable').on('mouseup', 'button#row-restart', function(e) {
/* DEFAULT - disable event */
e.preventDefault();
/* CLEAR - timeout */
clearTimeout(pressTimer);
return false;
}).mousedown(function(e){
/* DEFAULT - disable event */
e.preventDefault();
window.type = 1;
/* SET - timeout */
pressTimer = window.setTimeout(function() { window.type = 2; $('#basicDataTable button#row-restart').click(); }, 1000);
return false;
});
这是click()事件,工作正常:
$('#basicDataTable').on('click', 'button.btn.btn-ban.ban.row-test', function(e) {
var message;
/* DEFAULT - disable event */
e.preventDefault();
/* my custom code */
});
所以我需要在1秒后点击并长按按钮,但点击表格元素时不得点击并点击。
我想弄清楚2天,但我无法找到我犯错的地方
答案 0 :(得分:0)
我通过在论坛上找到代码来修复它,现在它不会仅在表格中的按钮上触发表格元素...就像它应该这样:
//from e-OS menu script
var longpress = 1000;
var start;
var timer;
//short press - show e-OS system menu
//long press - show e-OS settings
$('#basicDataTable').on( 'mousedown', 'button#row-restart', function(e) {
window.type = 1;
start = new Date().getTime();
timer = setTimeout(function(){ window.type = 2; $('#basicDataTable button#row-restart').click(); },1000)
}).on( 'mouseleave', function( e ) {
start = 0;
clearTimeout(timer);
}).on( 'mouseup', function( e ) {
if ( new Date().getTime() < ( start + longpress ) ) {
clearTimeout(timer);
console.log('short press!');
}
});