jQuery触摸事件应用不是函数



我有一个拖放的表。为了使拖放掉落并在没有拖放的情况下滚动页面滚动,我会使用jQuery touch。

问题是当我在表中制作选项卡时,它显示了控制台中的错误。

这是错误

jquery.js:4737 Uncaught TypeError: ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply is not a function
at HTMLTableElement.dispatch (jquery.js:4737)
at triggerCustomEvent (jquery.mobile-events.js:846)
at HTMLTableElement.tapFunc2 (jquery.mobile-events.js:498)
at HTMLTableElement.dispatch (jquery.js:4737)
at HTMLTableElement.elemData.handle (jquery.js:4549)

代码是这样:

$('.touchtable').tap('tap', function(e) { 
   console.log('hola2');
});

如何解决错误?

我读到的有关jQuery-touch的信息在这里

https://github.com/benmajor/jquery-touch-events

拖放的代码

if ($('.touchtable').on('doubletap',function(e){
$("#tbodyproject").sortable({
    items: "> tr",
    appendTo: "parent",
    helper: "clone",
    placeholder: "placeholder-style",
    containment: ".table",
    start: function(event, ui) {
        var cantidad_real = $('.table thead tr th:visible').length;
        var cantidad_actual = $(this).find('.placeholder-style td').length;
          if(cantidad_actual > cantidad_real){
          var cantidad_a_ocultar = (cantidad_actual - cantidad_real);
          for(var i = 0; i <= cantidad_a_ocultar; i++){
              $(this).find('.placeholder-style td:nth-child('+ i +')').addClass('hidden-td');
          }
        }
        ui.helper.css('display', 'table')
    },
    stop: function(event, ui) {
        ui.item.css('display', '')
    },
    update: function( event, ui ) { 
        let newOrder = $(this).sortable('toArray');
        $.ajax({
            type: "POST",
            url:'/admin/projects/updateOrder',
            data: {ids: newOrder}
        })
       .done(function( msg ) {
        location.reload();        
       });
    }
}).disableSelection();
}));

代码必须像这样:

$('.touchtable').on('doubletap', function(e) { 
    console.log('User tapped touchtable'); 
}); 

您应该使用 on方法代替 tap方法,然后传递 on方法上的 tap参数,该参数将您称为 tap方法。

$('.touchtable').on('tap', function(e) { 
   console.log('hola2');
});

另一种方式,您可以直接调用tap方法:

$('.touchtable').tap(function(e) {
   console.log('hola2');
});

注意:第一个方法是事件委托方法,第二种方法是直接方法。如果您具有动态插入元素,则必须使用事件委托方法使其正常工作。

最新更新