Javascript 如何在jQuery中使用.trigger()方法将eventData参数传递给.on()?

Javascript 如何在jQuery中使用.trigger()方法将eventData参数传递给.on()?,javascript,jquery,Javascript,Jquery,我在元素上有这样一个事件处理程序: select.on("change", null, { tbody: $("#tbody"), colspan: 5, onLoad: onLoadHandler, }, onSelectChange); 在onSelectChange中,我通过event.data对象以这种方式获取它们: event.data.tbody, event.data.colspan, event.data.onLoad 在我的代码的其他位置,我想在我的

我在
元素上有这样一个事件处理程序:

select.on("change", null, {
    tbody: $("#tbody"),
    colspan: 5,
    onLoad: onLoadHandler,
}, onSelectChange);
onSelectChange
中,我通过
event.data
对象以这种方式获取它们:

event.data.tbody,
event.data.colspan,
event.data.onLoad
在我的代码的其他位置,我想在我的
选择
元素的(“更改”)
事件上触发
,我需要提供相同的参数:

select.trigger("change", [$("#tbody"),  5, onLoadHandler]); // <- how to pass them as event.data?
function onSelectChange(event, triggeredData)
{
    var data = triggeredData || event.data;
    // do stuff with data.tbody or whatever here
}
select.on("change", null, {
    tbody: $("#tbody"),
    colspan: 5,
    onLoad: onLoadHandler,
}, onSelectChange);
select.on('change', function(event) { console.log(event.tbody, event.colspan, event.onLoad) })
select.trigger({type:'change', tbody:'val', colspan:'val', onLoad:'val'})

如果您想做到这一点,就必须更改处理程序。在处理程序中,不要只使用
event.data
,而是使用从
event.data
或其他参数提取的内容:

select.trigger("change", [$("#tbody"),  5, onLoadHandler]); // <- how to pass them as event.data?
function onSelectChange(event, triggeredData)
{
    var data = triggeredData || event.data;
    // do stuff with data.tbody or whatever here
}
select.on("change", null, {
    tbody: $("#tbody"),
    colspan: 5,
    onLoad: onLoadHandler,
}, onSelectChange);
select.on('change', function(event) { console.log(event.tbody, event.colspan, event.onLoad) })
select.trigger({type:'change', tbody:'val', colspan:'val', onLoad:'val'})
然后,您可以使用触发器发送不同的数据:

select.trigger("change", {tbody:$("#tbody"), colspan:5, onLoad:onLoadHandler});

或者在用户操作触发事件时使用
event.data

您不能更改event.data,但可以使用人们所说的其他参数。 或者,您可以传递事件参数:

select.trigger("change", [$("#tbody"),  5, onLoadHandler]); // <- how to pass them as event.data?
function onSelectChange(event, triggeredData)
{
    var data = triggeredData || event.data;
    // do stuff with data.tbody or whatever here
}
select.on("change", null, {
    tbody: $("#tbody"),
    colspan: 5,
    onLoad: onLoadHandler,
}, onSelectChange);
select.on('change', function(event) { console.log(event.tbody, event.colspan, event.onLoad) })
select.trigger({type:'change', tbody:'val', colspan:'val', onLoad:'val'})

顺便说一句,通过触发事件来调用函数是不好的做法。

如果数据来自事件绑定的位置,则触发时不能将数据放在那里。触发时,您所能做的就是创建其他参数,例如
函数myHandler(事件,additionalParams){…
@KevinB,我阅读了文档,我在问是否有一些解决方法不,没有。但这太简短了,不是一个有用的答案。不,事件对象的数据属性不能被.trigger修改。@KevinB,好的,谢谢。