jQuery触发器——如何传递触发事件的信息给处理器



我想这样做:

$(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'));
});

相关内容

  • 没有找到相关文章

最新更新