我想这样做:
$(document).on('click','.someclass',function(){
$('.otherclass').trigger('keyup',{aField:'my data'});
});
$(document).on('keyup','.otherclass',function(e){
console.log(e.aField); // and to have printed 'my data'
});
我想知道是否有一种方法来做类似的事情,但工作。因为那样是行不通的。
也许这个例子不是很清楚:当我点击一个链接时,我想在input
上触发keyup
事件,但我也想在触发它时传递一个对象{aField:'my data'}
。
反正我自己已经拿到了。解决方案是在处理程序
中再添加一个参数object
$(document).on('keyup','.otherclass',function(e,object){
console.log(object.aField); // this printed 'my data'
});
答案如下
$(document).on('click','.someclass',function(){
$('.otherclass').trigger('keyup',{aField:'my data'});
});
$(document).on('keyup','.otherclass',function(e, obj){
console.log(obj.afield); // and to have printed 'my data'
});
这是通过触发器向事件传递参数的正确方式,完整的文档可在这里获得http://api.jquery.com/trigger/
Update:为什么不为两个实例使用一个共同的处理程序,而不是试图触发某事
function handleInputAction(data) {
console.log(data.aField)
}
$(document).on('click','.someclass',function(){
handleInputAction({aField:'my data'});
});
$(document).on('keyup','.otherclass',function(e){
handleInputAction(e.aField);
});
使用$(this)
或事件目标。
$(document).on('keyup','.otherclass',function(e){
console.log($(this).attr('aField'));
// or
console.log(e.currentTarget.aField);
// or
console.log($(e.currentTarget).attr('aField'));
});