我有一个拖放的表。为了使拖放掉落并在没有拖放的情况下滚动页面滚动,我会使用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');
});
注意:第一个方法是事件委托方法,第二种方法是直接方法。如果您具有动态插入元素,则必须使用事件委托方法使其正常工作。