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

时间:2015-09-04 15:09:00

标签: jquery triggers

似乎代码如下:

$("#logo-events").trigger("remove");

一样
$("#logo-events").remove();

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

3 个答案:

答案 0 :(得分:5)

来自.trigger()方法的文档:

  

对于普通对象和窗口以外的DOM对象,如果是   触发的事件名称与对象上的属性名称匹配,   如果没有事件,jQuery将attempt to invoke the property as a method   handler调用event.preventDefault()。如果不希望出现这种情况,   使用.triggerHandler()代替

.remove()是DOM的原生函数:

  

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

将这两者结合起来就可以得到观察到的行为。 触发"删除" jQuery调用节点的本地if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { // ... elem[ type ](); // elem["remove"](); // ... } 方法,然后删除该元素。

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

$client = SesClient::factory(array(
    'user'   => 'uuuuu',
    'key'    => 'aaaaa',
    'secret' => 'bbbb',
    'region' => 'us-east-1',
));

$client->version("2010-12-01"); 
//Now that you have the client ready, you can build the message
$msg = array(); 
//more  code after this... 

答案 1 :(得分:-1)

.trigger()只是一种在加载时触发动作的方法,而.remove()是一种可以置于触发动作(无论是自动还是手动)中的方法。如果你正在使用.trigger('remove'),那么首先要有这个元素似乎毫无意义。

答案 2 :(得分:-1)

The trigger function

我包含了触发器功能供您参考,但是这是预期的行为。 Trigger允许您手动(或不)执行事件,例如在您的情况下删除。这通常用于支持“on()”函数。例如

( "#logo-events" ).on( "click", function() { alert( $( this ).text() ); }); $( "#logo-events" ).trigger( "click" );

这个块手动触发一个click函数,但它没有说的是,如果你只是在一个没有事件的元素上运行一个触发器,那么它只是一个函数来执行该函数。

例如:

$("logo-events").trigger("remove");

以下将运行。

希望有所帮助。