我发现自己编写的代码看起来像这样:
$(document).ready(function(){
updateStuff();
$('select').change(function(){
updateStuff();
});
});
function updateStuff(){
//do something simple
}
同一个函数updateStuff()
被调用两次(每个事件一次),但两个事件之间没有任何区别。我想知道是否有更好的方法来编写这个,以便在两个事件上调用相同的代码,我可以更多地干掉我的代码。这样,我不需要首先创建这个功能。
也许是这样的(如果存在这样的语法)?
$('select').bind(['document.ready', 'change'], function(){
//do something simple
});
答案 0 :(得分:2)
您需要在ready处理程序中包含change事件绑定,以便在执行绑定时保证DOM可以进行操作。你这几乎是我能想到的最简单的方式。我会改变你的代码来绑定你的更改事件,如下所示:
$('select').change(updateStuff);
除非您需要传递参数,否则无需在匿名函数中将您的调用包装到updateStuff()
。
正如jAndy指出的那样,你也可以通过使用jQuery手动调用事件的处理程序来调用你绑定为事件处理程序的函数,如下所示:
$('select').change(updateStuff).change();
您也可以使用简写就绪绑定,因此您的代码将简化为:
$(function(){
$('select').change(updateStuff).change();
});
function updateStuff(){
//do something simple
}
但是,如果你想同时绑定到其他事件(除了就绪),你可以这样做:
$('select').bind('change click', updateStuff);
答案 1 :(得分:1)
$(document).ready(function() {
$('select').change(function(){
updateStuff();
}).change();
});
..可能是实现这一目标的最便捷方式。就像是,“将更改事件绑定到该节点,然后至少调用该事件处理程序一次”。
甚至更短:
$(document).ready(function() {
$('select').change( updateStuff ).change();
});