Javascript jQuery longclick在表和表行中的其他按钮上激发

Javascript jQuery longclick在表和表行中的其他按钮上激发,javascript,jquery,Javascript,Jquery,我有以下表格结构: <table class="table table-datatable table-custom dataTable" id="basicDataTable" aria-describedby="basicDataTable_info" style="width: 1732px;"> <thead> ...some tr... </thead> <tbody role="alert" aria-l

我有以下表格结构:

<table class="table table-datatable table-custom dataTable" id="basicDataTable" aria-describedby="basicDataTable_info" style="width: 1732px;">
    <thead>
       ...some tr...
    </thead>
    <tbody role="alert" aria-live="polite" aria-relevant="all">
         <tr class="odd" id="1">
             <td class=" sorting_1" style="color: rgb(255, 255, 255);">1</td>
             <td class="" style="color: rgb(255, 255, 255);">My Custom string</td>
             <td class>
                 <button type="button" class="btn btn-danger delete row-delete" title="Delete"><i class="fa fa-cogs-remove fa-2x"></i></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>
             </td>
         </tr> 
    </tbody>
</table>
那么,我如何指定只让长按按钮重新启动?(id=“行重新启动”)

更新:

对于相同的按钮id,我有两个相同的事件触发器,这可能是问题所在

$('#basicDataTable').on('click', 'button#row-restart', function(e) {
            /* DEFAULT - disable event */
            e.preventDefault();
})

$('#basicDataTable').on('mousedown', 'button#row-restart', function(e) {

})

您可以看到,常见的是相同的按钮id“#basicDataTable”和“button#row restart”,但不同的是仅单击并向下移动。也许jQuery误解了这一点,并在每个表行和我单击的不同按钮上触发事件?

将其添加到jQuery中

e.stopPropagation();

将其添加到jquery中

e.stopPropagation();

尝试此操作,但不建议这样做,因为表将是动态的,所以按钮的Id将更改为动态

$(函数(){
var start=0;
$(“#行重新启动”).on('mousedown',函数(e){
//console.log('long click…'))
/*默认-禁用事件*/
e、 预防默认值();
window.type=1;
开始=新日期().getTime();
}).on('mouseleave',函数(e){
window.type=1;
开始=0;
}).on('mouseup',函数(e){
/*默认-禁用事件*/
e、 预防默认值();
如果(新日期().getTime()>=(开始+1000)){
window.type=2;
$(“#基本CDATA表#行重新启动”)。单击();
警惕(“长按”);
}否则{
警惕(“短按”);
}
});
})

...
1.
我的自定义字符串
删除
重新启动

尝试此操作,但不建议这样做,因为表格将是动态的,所以按钮的Id将更改为动态

$(函数(){
var start=0;
$(“#行重新启动”).on('mousedown',函数(e){
//console.log('long click…'))
/*默认-禁用事件*/
e、 预防默认值();
window.type=1;
开始=新日期().getTime();
}).on('mouseleave',函数(e){
window.type=1;
开始=0;
}).on('mouseup',函数(e){
/*默认-禁用事件*/
e、 预防默认值();
如果(新日期().getTime()>=(开始+1000)){
window.type=2;
$(“#基本CDATA表#行重新启动”)。单击();
警惕(“长按”);
}否则{
警惕(“短按”);
}
});
})

...
1.
我的自定义字符串
删除
重新启动

经过多次尝试和错误,在您的帮助下,我终于让它工作了:

解决方案是将其添加到现有比较中:

&& start !== 0
javascript中的最后一段代码是:

 /* DEFINE - variables */
    var start = 0;

    /* RESTART - long click */
    $('#basicDataTable').on('mousedown', 'button#row-restart', function(e) {
        console.log('long click...')
        /* DEFAULT - disable event */
        e.preventDefault();
        window.type = 1;
        start = new Date().getTime();
    }).on('mouseup', function(e) {
        /* DEFAULT - disable event */
        e.preventDefault();
        if (new Date().getTime() >= (start+1000) && start !== 0) {
            window.type = 2;
            start = 0;
            $('#basicDataTable button#row-restart').click();
        }
    }).on('mouseleave', function(e) {
        window.type = 1;
        start = 0;
    });

现在,它在行重新启动按钮上启动,并且在单击表或其他按钮时不会触发此操作..像charm一样工作

经过多次尝试和错误以及您的帮助,我终于让它工作了:

解决方案是将其添加到现有比较中:

&& start !== 0
javascript中的最后一段代码是:

 /* DEFINE - variables */
    var start = 0;

    /* RESTART - long click */
    $('#basicDataTable').on('mousedown', 'button#row-restart', function(e) {
        console.log('long click...')
        /* DEFAULT - disable event */
        e.preventDefault();
        window.type = 1;
        start = new Date().getTime();
    }).on('mouseup', function(e) {
        /* DEFAULT - disable event */
        e.preventDefault();
        if (new Date().getTime() >= (start+1000) && start !== 0) {
            window.type = 2;
            start = 0;
            $('#basicDataTable button#row-restart').click();
        }
    }).on('mouseleave', function(e) {
        window.type = 1;
        start = 0;
    });

现在,它在行重新启动按钮上触发,在单击表或其他按钮时不会触发此操作。工作原理类似于charm

我在上面的示例中在e.preventDefault()之前添加了它,但当我单击表或其他按钮时,问题是相同的,它会触发消息…所以我真的需要将此e.stopPropagation()放在哪里在代码中…在e.preventDefault()之前或之后或其他位置?我在上面的示例中在e.preventDefault()之前添加了它,但当我单击表或其他按钮时,问题是相同的,它会触发消息…所以我真的需要在代码中…在e.preventDefault()之前或之后将此e.stopPropagation()放在哪里还是其他地方?谢谢,但我需要使用:$(“#basicDataTable”)。在('mousedown','button#row restart',函数(e)上{要添加路径“button#row restart”,以便在我单击该按钮时触发警报,但问题是当我单击table或另一个按钮时,它也会触发。我想我需要放置不同的路径…因此,如果您可以重写上面的触发器,并在此处发布此函数和该按钮的路径…谢谢,但我需要使用:$(“#basicDataTable”)。on('mousedown'、'button#row restart',function(e){添加路径'button#row restart',这样当我单击该按钮时会触发警报,但问题是当我单击表或另一个按钮时它也会触发..我想我需要放置不同的路径…因此,如果您可以重写上面的以触发此函数并使用该按钮的路径发布在此处。。。