根据他们的API(http://api.jquery.com/trigger/),您应该可以这样做:
$("body").trigger({
type:"logged",
user:"foo",
pass:"bar"
});
但是,我尝试了下面的一些示例,如果我通过trigger()
调用数据,数据永远不会通过...
答案 0 :(得分:1)
您正在检查event.data
,这在您的所有示例中都未定义
this.resize = function(event) {
if (event.data) {
console.log("with data " + event.type + " : " + event.data.toString());
} else {
console.log("without data " + event.type);
}
}
event.data
是将数据传递给事件处理程序
$('element').on('click', {'event' : 'data', 'goes' : 'here'}, function(e) {
console.log(e.data.goes); // here
});
^那是event.data
,你没有使用它,这里是那个文档
<强> http://api.jquery.com/event.data/ 强>
你想要的更像是
this.resize = function(event) {
if (event.test1) {
console.log(event.test1)
console.log(event.test2)
console.log(event.test3)
}
}
请注意,即使您定义了data
属性,它也不会覆盖event.data
属性,因为它受jQuery内部保护,所以这将失败
$(element).trigger({
type : 'click',
data : 'test' // never passed
});
这是为了保持jQuery提供的event.data
行为被覆盖。
换句话说,您在event.data
trigger()
感到困惑
答案 1 :(得分:0)
好像你错过了eventType
$("body").trigger("click", {
type:"logged",
user:"foo",
pass:"bar"
});
答案 2 :(得分:0)
这就是我使用trigger
的方式,它对我有用:
$("body").bind('someEvent', function (e, arg1, arg2) {
alert('arg1: ' + arg1);
alert('arg2: ' + arg2);
});
$("body").trigger('someEvent', ['arg1_text', 'arg2_text']);
答案 3 :(得分:0)
$('#logo').trigger('myEvent', "Hello!");
$('#logo').on('myEvent',(e, data) => {
console.log(e.data); // <--- this is undefined
console.log(data); // <--- data === "Hello!"
});
在回调中使用第二个参数。不是e.data
的{{1}}