Javascript jQuery为多个元素和多个事件提供相同的函数

Javascript jQuery为多个元素和多个事件提供相同的函数,javascript,jquery,events,triggers,Javascript,Jquery,Events,Triggers,我有一个函数,每当任何一个用户单击其中一个锚元素时,我都想执行,例如 $('.element').on('click', function(){ // do stuff here }); $('select').on('change', function(){ // do same stuff here }); 如果一个select元素改变了它的值,我想做同样的事情,比如 $('.element').on('click', function(){ // do stuff here });

我有一个函数,每当任何一个用户单击其中一个锚元素时,我都想执行,例如

$('.element').on('click', function(){
// do stuff here
});
$('select').on('change', function(){
// do same stuff here
});
如果一个select元素改变了它的值,我想做同样的事情,比如

$('.element').on('click', function(){
// do stuff here
});
$('select').on('change', function(){
// do same stuff here
});
我知道我能做到

$('.element', 'select').on('click change', function(){
// do stuff here
});

但是,每当我单击select元素时,也会触发这种情况,我不想让用户感到困惑,然后在select元素值发生更改时执行某些操作。

处理这种情况的最具可读性的方法之一是创建一个单独的函数:

function doStuff(){
 //do stuff here
}

$('.element').on('click', function(){
  doStuff();
});

$('select').on('change', function(){
  doStuff();
});

这也为您提供了一个很好的机会,通过给函数一个好的、有意义的名称,您可以更清楚地了解代码的用途。

您没有将函数内联

var doStuff = function() {
  // do stuff here
});

$('.element').on('click', doStuff);
$('select').on('change', doStuff);

Kippie的答案绝对比这个好。为什么要调用
doStuff
inline?这样,函数的作用域将丢失,
将是全局的,而不是调用元素。是的,在大多数情况下,最好采用Kippie的方法(传入函数而不是调用它)。我想让OP更清楚地了解正在发生的事情,并给他们机会在每种情况下做其他事情,以防他们没有提到差异。婴儿步。我不会改变我的答案,但是,是的,阅读我的答案以确保你了解发生了什么,但实际上要像Kippie那样做。作为这些问题的新手,我想知道如果你真的想在事件发生时将参数传递给doStuff函数,Jacob Mattison的方法是否是一种可行的方法?