我需要在DatatTble的单元格上调用自定义事件。因此,我有以下方法:

(function ($) {
  $.fn.longClick = function (callback) {
    //event
  };
})(jQuery);


为了进行绑定,作为测试,我执行以下操作:

$("h1").longClick(function () {
  console.log('triggered');
});


我需要替换点击事件:

$('#dtStatus').on('click', 'tbody td:not(:first-child)', function (e) {
  console.log('triggered');
});


随着我的longpress活动。

$('#dtStatus').on('longClick', 'tbody td:not(:first-child)', function (e) {
  console.log('triggered');
});


h1 longclick和td click事件有效,但td longpress无效。
有人可以告诉我为什么我不能使用on('longClick')这样的事件吗?

谢谢。

最佳答案

我认为您正在将功能与事件混在一起。使用$.fn.longClick创建了一个已经通过$("h1").longClick(...)成功调用的函数。

现在,要将其像事件一样使用,您需要先触发它。例如:

$('#dtStatus').click(function() {
    $(this).trigger("myEvent");
});


它会在单击的项目上触发名称为myEvent的事件。然后,您可以通过以下方式捕获该事件:

$('#dtStatus').on("myEvent", function() {
    alert("myEvent called!");
});


您可以在jQuery documentation中了解有关自定义事件的更多信息。

09-30 16:03
查看更多