所以我正在为dom脚本创建一些逻辑,并最终找到问题,我需要在按键时执行多个方法。似乎最后定义的onkeyup是执行的,这里是一些代码:
第一种方法:
...var elements=$$('[id^='+table+']&[id$='+tableField+']');
elements.each(function filter(item) {
//for each item
item.onkeyup = function() { ...
第二种方法:
...//for each referenced input
for(var i=0, fields=htmlFieldElems.length;i<fields;i++){
//set keyup event for involved fiels in the expression
$(htmlFieldElems[i]).onkeyup = function() {...
可能会发生输入元素在两种方法中都可能相同,并且两者都需要在某些内容发生变化时执行...那么处理此问题的最佳方法是什么?
答案 0 :(得分:2)
这就是我使用jQuery所遵循的。这是example
$('#element').bind('customE',function(){
// do some stuff
});
$('#element').bind('customE',function(){
// do some other interesting stuff else use one event handler :-)
});
$('#element').bind('customE',function(){
// still another
});
$('#element').on('keyup',function(){
$('#element').trigger('customE');
});
希望这会有所帮助..即使其他答案也会有所帮助..但这很容易维护: - )
答案 1 :(得分:1)
在纯JavaScript中,您只需从onkeyup事件处理程序调用多个方法,就像这样...
item.onkeyup = function() {
func1();
func2();
funcn();
}
如果您使用的是jQuery等框架,您可以继续添加事件,如下所示:
$('#item').keyup(func1);
$('#item').keyup(func2);
$('#item').keyup(funcn);
原型:
$('foo').observe('keyup', function(event) {
func1();
func2();
funcn();
});