1

我想做这样的事情

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

我想知道是否有办法做类似的事情,但要工作。因为这样是行不通的。


也许这个例子不是很清楚:当我点击一个链接时,我想keyup在 a 上触发事件input,但我也想{aField:'my data'}在触发它时传递一个对象。


反正我自己已经搞定了。object解决方案是在处理程序中再添加一个参数

$(document).on('keyup','.otherclass',function(e,object){
    console.log(object.aField); // this printed 'my data'
});
4

2 回答 2

0

更新:为什么不为这两个实例使用一个通用的处理程序,而不是尝试触发某些东西。

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'));
});
于 2013-03-29T16:44:41.717 回答
0

这是答案

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

This is the correct way of passing arguments to an event via trigger, full documentation available here http://api.jquery.com/trigger/

于 2013-03-29T17:09:10.387 回答