我发现自己编写的代码看起来像这样:
$(document).ready(function(){
updateStuff();
$('select').change(function(){
updateStuff();
});
});
function updateStuff(){
//do something simple
}
同一个函数 updateStuff()
被调用两次(每个事件一次),但两个事件之间没有任何不同。我想知道是否有更好的方法来编写此代码,以便在两个事件上调用相同的代码,并且我可以使我的代码更加干燥。这样,我就不需要首先创建这个函数。
也许是这样的(如果存在这样的语法)?
$('select').bind(['document.ready', 'change'], function(){
//do something simple
});
最佳答案
您需要将更改事件绑定(bind)在就绪处理程序内,以便保证在进行绑定(bind)时 DOM 已准备好进行操作。你正在以我能想到的几乎最简单的方式来做这件事。我会更改您的代码以绑定(bind)您的更改事件,如下所示:
$('select').change(updateStuff);
除非您需要传入参数,否则无需将对 updateStuff()
的调用包装在匿名函数中。
正如 jAndy 指出的,您还可以通过使用 jQuery 手动调用事件处理程序来调用已绑定(bind)为事件处理程序的函数,如下所示:
$('select').change(updateStuff).change();
您还可以使用速记就绪绑定(bind),因此您的代码将被简化为:
$(function(){
$('select').change(updateStuff).change();
});
function updateStuff(){
//do something simple
}
但是,如果您想同时绑定(bind)其他事件(除了就绪事件),您可以这样做:
$('select').bind('change click', updateStuff);
关于jQuery:如何在两个不同的事件上绑定(bind)相同的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5956932/