Javascript 如何组合不同的事件触发器
我是jQuery新手,希望有人能帮我解决这个问题 我有一个JS函数,它是由各种元素/类触发的,不同的是,对于其中一些元素/类,事件是通过点击触发的,而对于其他元素/类,事件是通过按键触发的 到目前为止,我有以下一个例子,它可以按预期工作,但我想知道是否有方法将它们结合起来,因为这里唯一的区别是触发器(单击、键控等)和避免重复代码 如果有任何其他建议写这个不同的,请让我也知道 我的jQuery(示例):Javascript 如何组合不同的事件触发器,javascript,jquery,events,triggers,Javascript,Jquery,Events,Triggers,我是jQuery新手,希望有人能帮我解决这个问题 我有一个JS函数,它是由各种元素/类触发的,不同的是,对于其中一些元素/类,事件是通过点击触发的,而对于其他元素/类,事件是通过按键触发的 到目前为止,我有以下一个例子,它可以按预期工作,但我想知道是否有方法将它们结合起来,因为这里唯一的区别是触发器(单击、键控等)和避免重复代码 如果有任何其他建议写这个不同的,请让我也知道 我的jQuery(示例): $(document).on('keyup', '.calcMinus, .calcPlus'
$(document).on('keyup', '.calcMinus, .calcPlus', function(e){
var row = $(e.target);
$(row).closest('table').find('td.calcSum').each(function(index){
calculateSums(row, index);
});
});
$(document).on('click', '.trAdd, .trDelete, .trDown, .trUp', function(e){
var row = $(e.target);
$(row).closest('table').find('td.calcSum').each(function(index){
calculateSums(row, index);
});
});
// ...
function calculateSums(row, index){
// do stuff
}
我的JS功能:
$(document).on('keyup', '.calcMinus, .calcPlus', function(e){
var row = $(e.target);
$(row).closest('table').find('td.calcSum').each(function(index){
calculateSums(row, index);
});
});
$(document).on('click', '.trAdd, .trDelete, .trDown, .trUp', function(e){
var row = $(e.target);
$(row).closest('table').find('td.calcSum').each(function(index){
calculateSums(row, index);
});
});
// ...
function calculateSums(row, index){
// do stuff
}
多谢各位,
Mike将代码从事件处理程序提取到函数中,并从两个现有处理程序调用该函数:
function handleEvent(row) {
$(row).closest('table').find('td.calcSum').each(function(index){
calculateSums(row, index);
})
}
$(document).on('keyup', '.calcMinus, .calcPlus', function(e){
handleEvent($(e.target));
});
$(document).on('click', '.trAdd, .trDelete, .trDown, .trUp', function(e){
handleEvent($(e.target));
});
将事件处理程序中的代码提取到函数中,并从两个现有处理程序中调用该代码:
function handleEvent(row) {
$(row).closest('table').find('td.calcSum').each(function(index){
calculateSums(row, index);
})
}
$(document).on('keyup', '.calcMinus, .calcPlus', function(e){
handleEvent($(e.target));
});
$(document).on('click', '.trAdd, .trDelete, .trDown, .trUp', function(e){
handleEvent($(e.target));
});
如果否决票是因为
e
我纠正了我的错误answer@RoryMcCrossan,谢谢你的更正。是因为event
不起作用吗?不是-我之所以编辑,是因为在combined()
函数的参数列表中没有包含e
参数。@AmmarCSE我认为event
不会出现在每个浏览器中-最好坚持使用jQuery传递给您的一个,特别是因为它的所有信息都正常化了,等等@keewee279,你可以给它任何你想要的名字,只要它有名字,如果否决票是因为e
I纠正了我的错误answer@RoryMcCrossan,谢谢你的更正。是因为event
不起作用吗?不是-我之所以编辑,是因为在combined()
函数的参数列表中没有包含e
参数。@AmmarCSE我认为event
不会出现在每个浏览器中-最好坚持使用jQuery传递给您的一个,特别是因为它的所有信息都正常化了,@keewee279,你可以给它取任何名字,只要它有名字。谢谢!我已经把我的函数代码分开了,只是不是全部,所以这肯定有帮助。:)谢谢你!我已经把我的函数代码分开了,只是不是全部,所以这肯定有帮助。:)