为什么JQuery触发器("remove")与remove()一样没有触发器?

JVi*_*ela 4 jquery triggers

似乎代码如下:

$("#logo-events").trigger("remove");
Run Code Online (Sandbox Code Playgroud)

做同样的事情

$("#logo-events").remove();
Run Code Online (Sandbox Code Playgroud)

这是预期的行为吗?您可以在打开控制台的jquery网站上试一试.

And*_*eas 5

.trigger()方法的文档:

对于普通对象和窗口以外的DOM对象,如果触发的事件名称与对象上的属性名称匹配,则如果没有事件处理程序调用event.preventDefault(),jQuery将尝试将该属性作为方法调用.如果不需要此行为,请改用.triggerHandler()

.remove() 是DOM的本机功能:

调用remove()方法时,必须运行以下步骤:
- 如果上下文对象的父级为null,则终止这些步骤.
- 从上下文对象的父对象中删除上下文对象.

将这两者结合起来就可以得到观察到的行为.当你触发"删除"时,jQuery会调用.remove()节点的本机方法,然后删除该元素.

jQuery/event.js中的相关部分:

if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
    // ...
    elem[ type ]();    // elem["remove"]();
    // ...
}
Run Code Online (Sandbox Code Playgroud)