【问题标题】:How can I combine two functions that fire on the same class name?如何组合两个以相同类名触发的函数?
【发布时间】:2019-01-23 03:12:54
【问题描述】:

我有一个function,当我单击我的 jquery 数据表项中的项时会触发它。

$('.table tbody').on( 'click', '.item', function (e) {
   alert("clicked");
});

我在数据表之外有一个具有相同类的项目,它适用于这个function

  $('.item').on( 'click', function (e) {
     alert("clicked");
  });

function 中的内容是相同的。有没有办法将这两个功能合二为一?

【问题讨论】:

    标签: jquery function datatables click


    【解决方案1】:

    你可以先创建一个函数

    const func = () => {
       alert("clicked")
    };
    

    并在两个事件侦听器中执行此操作

    $('.table tbody').on( 'click', '.item', func);
    $('.item').on( 'click', func);
    

    更新:

    如果你想在函数中使用事件,那么你也可以使用箭头函数。

    const func = (e, el) => {
       e.preventDefault()
       alert($(el).attr("data-id"));
    };
    
    $('.table tbody').on( 'click', '.item', function(e){
         func(e, this);
    });
    $('.item').on( 'click',function(e){
         func(e, this);
    });
    

    【讨论】:

    • 为什么我必须使用const func?为什么我不能使用function clicked() { alert("clicked"); }
    • const func 是 ES2015 JavaScript 中的函数表达式。你也可以写function clicked() { alert("clicked"); }这个,它会工作得很好。
    • @Jarla 很高兴为您提供帮助。在此处阅读更多信息stackoverflow.com/questions/33040703/…。如果它解决了您的问题,请标记为正确。
    • 是的,我必须再等几分钟,直到他们让我标记它
    • @Jarla Nope,请参阅更新后的答案。如果您还有其他问题,我会要求您开始一个新线程并关闭该线程。 SO社区并没有真正理解这一点,答案应该集中在所提出的问题上。如果它解决了问题,请标记答案正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 2020-08-24
    相关资源
    最近更新 更多