jQuery具有多个元素和多个事件的相同功能

Ton*_*rić 5 javascript jquery events triggers

每当用户点击其中一个锚元素时,我都会有一个函数,比如这个

$('.element').on('click', function(){
// do stuff here
});
Run Code Online (Sandbox Code Playgroud)

如果一个select元素改变了它的值,我想做同样的事情,比如这个

$('select').on('change', function(){
// do same stuff here
});
Run Code Online (Sandbox Code Playgroud)

我知道我能做到

$('.element', 'select').on('click change', function(){
// do stuff here
});
Run Code Online (Sandbox Code Playgroud)

但是当我点击select元素并且我不想混淆用户并做一些事情时,这也会触发,就在select元素值发生变化时.

Kip*_*pie 21

你不具备让你的函数内联.

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

$('.element').on('click', doStuff);
$('select').on('change', doStuff);
Run Code Online (Sandbox Code Playgroud)


Jac*_*son 7

处理此问题的最可读方法之一是创建单独的函数:

function doStuff(){
 //do stuff here
}

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

$('select').on('change', function(){
  doStuff();
});
Run Code Online (Sandbox Code Playgroud)

通过为该函数提供一个漂亮,有意义的名称,这也为您提供了一个很好的机会,使您的代码更加清晰.

  • 是的,在大多数情况下,最好采取Kippie的方法(传递函数而不是调用它).我希望OP更清楚OP发生了什么,并让他们有机会在每种情况下做其他事情,以防他们没有提到差异.宝贝的步骤.我不会改变我的答案,但是,是的,请阅读我的答案以确保你理解发生了什么,但实际上就像Kippie那样. (3认同)
  • Kippie的答案肯定比这个好. (2认同)