Javascript 如何准确地传递jQuery';什么是触发器?

Javascript 如何准确地传递jQuery';什么是触发器?,javascript,jquery,html,Javascript,Jquery,Html,根据他们的API(),您应该可以这样做: $("body").trigger({ type:"logged", user:"foo", pass:"bar" }); 但是,我尝试了下面的几个示例,如果我通过trigger()调用它,数据就永远不会传递 您似乎缺少事件类型 $("body").trigger("click", { type:"logged", user:"foo", pass:"bar" }); 这就是

根据他们的API(),您应该可以这样做:

    $("body").trigger({
      type:"logged",
      user:"foo",
      pass:"bar"
    });
但是,我尝试了下面的几个示例,如果我通过
trigger()
调用它,数据就永远不会传递


您似乎缺少事件类型

$("body").trigger("click", {
    type:"logged",
    user:"foo",
    pass:"bar"
});

这就是我使用触发器的方式,它对我有效:

$("body").bind('someEvent', function (e, arg1, arg2) {
    alert('arg1: ' + arg1);
    alert('arg2: ' + arg2);
});

$("body").trigger('someEvent', ['arg1_text', 'arg2_text']);

您正在检查
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
,您没有使用它,下面是相关文档

你想要的是更像

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提供的
事件.data
行为被覆盖

换句话说,您将
事件.data
与在
trigger()

$(“#logo”).trigger('myEvent',“Hello!”)中传递任意数据混淆了;
$(“#logo”)。在('myEvent',(e,data)=>{

console.log(如数据);//顺便说一句,jQuery的事件处理系统并不是为javascript类和实例而设计的,而是为DOM元素而设计的,您用实际的节点试过了吗?正如没有人回答的那样,我会尝试。
event.data
在您的示例中总是未定义的,它用于完全不同的事情,在事件处理程序中传递数据。您使用触发器传递任意数据,您只需检查该数据,而不是
事件。数据
我可以调用
触发器
,用于自定义javascript对象。当您执行
$(您的对象)时,打开(“blah”)
,jQuery将向自定义对象添加必要的内容。如果您尝试
调整窗口大小,它不会是未定义的。好吧,您做错了,我添加了一个答案,试图解释为什么在每种情况下都设置了类型。
$('#logo').trigger('myEvent', "Hello!");

$('#logo').on('myEvent',(e, data) => {
   console.log(e.data); // <--- this is undefined
   console.log(data);  // <--- data === "Hello!"
});