Javascript jQuery自定义事件究竟是如何工作的

Javascript jQuery自定义事件究竟是如何工作的,javascript,jquery,Javascript,Jquery,我找不到任何关于jquery中自定义事件实际如何实现的好资源。例如他们如何模拟事件冒泡等。查看 也可以通过以下方式签出此项: // bubbling is internal trigger: function( event, data, elem /*, bubbling */ ) { // Event object or event type var type = event.type || event, bubbling = arguments[3]; // Handle a gl

我找不到任何关于jquery中自定义事件实际如何实现的好资源。例如他们如何模拟事件冒泡等。

查看

也可以通过以下方式签出此项:

// bubbling is internal
trigger: function( event, data, elem /*, bubbling */ ) {
// Event object or event type
var type = event.type || event,
    bubbling = arguments[3];

// Handle a global trigger
if ( !elem ) {
    // Don't bubble custom events when global (to avoid too much overhead)
    event.stopPropagation();

    // Only trigger if we've ever bound an event for it
    if ( jQuery.event.global[ type ] ) {
        jQuery.each( jQuery.cache, function() {
            if ( this.events && this.events[type] ) {
                jQuery.event.trigger( event, data, this.handle.elem );
            }
        });
    }
}

// ... snip ...
// Trigger the event, it is assumed that "handle" is a function
var handle = elem.nodeType ?
    jQuery.data( elem, "handle" ) :
    (jQuery.data( elem, "__events__" ) || {}).handle;

if ( handle ) {
    handle.apply( elem, data );
}

var parent = elem.parentNode || elem.ownerDocument;
// ... snip ....
if ( !event.isPropagationStopped() && parent ) {
    jQuery.event.trigger( event, data, parent, true );

   } else if ( !event.isDefaultPrevented() ) {
   // ... snip ...
                jQuery.event.triggered = true;
                target[ targetType ]();
    }
}
这里的情况如下:

调用
trigger
时,jQuery检查事件是否被全局触发(
$.trigger(“event_name”);

如果未全局触发,且传播未停止相关元素具有父元素(
!event.isPropagationStopped()&&parent
),则jQuery手动调用父元素上的触发器事件

jQuery.event.trigger( event, data, parent, true );

还有很多事情要做——请参阅jQuery源代码。

我认为他不想要API解释,而是想要关于它们实际工作原理的技术解释。@ThiefMaster如果是这样的话,最好的学习方法就是查看源代码:)
jQuery.event.trigger( event, data, parent, true );