0

目标是通过 event.data 传递参数,这是我测试它的完整示例:http: //jsfiddle.net/

$el.trigger( $.Event('click.NGB', { example: '1' }));
$el.trigger( $.Event('click.NGB', {data: { example: '2' } })); // :-(
$el.trigger( $.Event('click.NGB', [{ example: '3' }]));
$el.trigger( $.Event('click.NGB', [{ data: { example: '4' } }])); 
$el.trigger( $.Event('click.NGB'), { example: '5' });
$el.trigger({ type: 'click.NGB', data: [{ example: '6' }] }); // :-(

我不知道为什么如果 Event 对象具有我们无法访问的数据属性...

但是使用 '.on' 功能它是有效的!:-(

$('#response').on( 'click.NGB', {example: '7'}, function(e){ e.data.example; } );  

有谁知道该怎么做?:-)

回答

在所有文档和测试之后,我决定使用这种方法:

$el.trigger('click.NGB', [ {example : '8'} ] );

谢谢大家!

4

3 回答 3

1

这是这个问题的重复问题。

该问题的“简短答案”应该很好地回答您的问题。

trigger() 可以将数据传递给您的事件处理程序吗?是(作为附加参数)

trigger() 可以直接将数据传递给 event.data 对象吗?否(只有 on() 这样做)

于 2014-08-22T23:19:44.717 回答
0

如果您的目标是随事件一起发送额外的数据,您可以在发送和接收事件的位置使用额外的参数:

接收:

// Note discrete param --------------v
$("#foo").on("whatever", function(e, param) {
  display("param: " + JSON.stringify(param));
});

发送:

// Note discrete param -------v
$("#foo").trigger("whatever", 42);

现场示例

于 2014-08-22T22:49:25.140 回答
0

固定在这里 - http://jsfiddle.net/xgf1uhd1/7/

$('#button').on('click', function (e) {
    e.stopPropagation();
    e.preventDefault();

    $el = $('#response');

    $el.trigger( $.Event('click.NGB', { example: '1' }));
});

$('#response').on('click.NGB', function () {
    $ev = arguments[0];
    example = arguments[1];
    $this = $(this);
    $this.find('pre').append('value is === ' + arguments[0].example);
});
于 2014-08-22T22:52:21.867 回答