是否可以将匿名函数附加到两个不同的元素/事件?

时间:2017-03-24 17:06:10

标签: javascript jquery events jquery-events

我想知道是否可以使用.on()将匿名函数附加到两个不同的元素和两个不同的事件。例如,我使用引导选项卡和引导程序引发自定义事件类型以更改名为shown.bs.tab的选项卡。我想使用.on()将匿名函数附加到此事件,但我想将相同的匿名函数附加到按钮的click事件。

我在考虑这样做:

$('a[data-toggle="tab"],#myButton').on('shown.bs.tab click', function () {
    alert("Tada");
});

但这会产生副作用,即在切换标签时显示两次警报。一次为shown.bs.tab事件,另一次为click事件。

我想我可以这样做:

function ShowAlert() {
    alert("Tada");
}
$('a[data-toggle="tab"]').on('shown.bs.tab', ShowAlert);
$('#myButton').on('click', ShowAlert);

但我想使用匿名函数。是否有一种优雅的方式来做类似下面的事情?

// Pseudocode
$('a[data-toggle="tab"]').on('shown.bs.tab') AND $('#myButton').on('click') DO: function () {
    alert("Anonymous function called");
});

2 个答案:

答案 0 :(得分:1)

我想你可以这样做:

var ShowAlert = function() {
    alert("Tada");
}
$('a[data-toggle="tab"]').on('shown.bs.tab', ShowAlert);
$('#myButton').on('click', ShowAlert);

ShowAlert在技术上是一个匿名函数。

答案 1 :(得分:1)

jQuery使用css选择器,因此您可以对不同的类使用相同的代码,您可以使用以下方法搜索多个对象:

var ShowAlert = function() {
        alert("Tada");
    };
    $('.a[data-toggle="tab"],#myButton').on('click', ShowAlert);

var ShowAlert = function() {
    alert("Tada");
};
$('.a[data-toggle="tab"]').add('#myButton').on('click', ShowAlert);
相关问题