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,好的,谢谢。