看起来以下代码:
$("#logo-events").trigger("remove");
与“
”相同的功能。$("#logo-events").remove();
这是预期的行为吗?你可以在打开控制台的jQuery网站上尝试一下。
看起来以下代码:
$("#logo-events").trigger("remove");
与“
”相同的功能。$("#logo-events").remove();
根据 .trigger()
方法的文档:
对于普通对象和除 window 以外的 DOM 对象,如果触发的事件名称与对象上的属性名称匹配,且没有事件处理程序调用 event.preventDefault(),jQuery 将 尝试将该属性作为方法调用。如果不希望出现这种行为,请改用 .triggerHandler()。
.remove()
是 DOM 的本地函数:
调用 remove() 方法时,必须执行以下步骤:
- 如果上下文对象的父级为 null,则终止这些步骤。
- 从上下文对象的父级中移除上下文对象。
将这两个内容结合起来,就可以得到观察到的行为。
当触发 "remove" 时,jQuery 调用节点的本地 .remove()
方法,然后删除元素。
在jQuery/event.js中相关的部分:
if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
// ...
elem[ type ](); // elem["remove"]();
// ...
}
.trigger() 是一种在加载时触发动作的方法,而 .remove() 则是可以放置在触发的动作中(无论是自动还是手动)。如果您正在使用 .trigger('remove'),那么在第一次就没有必要拥有该元素。
我包含了触发器函数供您参考,但是是的,那是预期的行为。 触发器允许您手动(或自动)执行事件,比如在您的情况下删除。这通常用于支持“on()”函数。例如:
( "#logo-events" ).on( "click", function() {
alert( $( this ).text() );
});
$( "#logo-events" ).trigger( "click" );
此代码块手动触发点击函数,但它没有说的是,如果您只对没有事件但有函数的元素运行触发器,则会执行该函数。
例如:
$("logo-events").trigger("remove");
以下代码将直接运行。
希望能对您有所帮助。