如何将自定义事件添加到 jQuery 插件模式中

Posted

技术标签:

【中文标题】如何将自定义事件添加到 jQuery 插件模式中【英文标题】:How can I add custom events into jQuery plugin pattern 【发布时间】:2015-04-04 17:18:55 【问题描述】:

如何将自定义事件添加到命名空间的 jQuery 插件模式?我想添加类似这样的自定义事件:

$.myNamespace.myPluginName.trigger( 'myEvent' );

通常,我使用这样的模式(原始模式是here):

$.myNamespace.myPluginName( '#myDiv' );

这是模式:

;(function ( $ ) 
    if (!$.myNamespace) 
        $.myNamespace = ;
    

    $.myNamespace.myPluginName = function ( el, myFunctionParam, options ) 
        // To avoid scope issues, use 'base' instead of 'this'
        // to reference this class from internal events and functions.
        var base = this;

        // Access to jQuery and DOM versions of element
        base.$el = $(el);
        base.el = el;

        // Add a reverse reference to the DOM object
        base.$el.data( "myNamespace.myPluginName" , base );

        base.init = function () 
            base.myFunctionParam = myFunctionParam;

            base.options = $.extend(,
            $.myNamespace.myPluginName.defaultOptions, options);

            // Put your initialization code here
        ;

        // Sample Function, Uncomment to use
        // base.functionName = function( paramaters )
        //
        // ;
        // Run initializer
        base.init();
    ;

    $.myNamespace.myPluginName.defaultOptions = 
        myDefaultValue: ""
    ;

    $.fn.mynamespace_myPluginName = function
        ( myFunctionParam, options ) 
        return this.each(function () 
            (new $.myNamespace.myPluginName(this,
            myFunctionParam, options));
        );
    ;

)( jQuery );

【问题讨论】:

【参考方案1】:

来自jQuery Docs

提供回调功能

什么是回调? – 回调本质上是一个稍后调用的函数,通常由事件触发。它作为参数传递,通常传递给组件的初始调用,在本例中为 jQuery 插件。

如果您的插件是由事件驱动的,那么为每个事件提供回调功能可能是个好主意。另外,您可以创建自己的自定义事件,然后为这些事件提供回调。在这个画廊插件中,添加一个“onImageShow”回调可能是有意义的。

var defaults = 

    // We define an empty anonymous function so that
    // we don't need to check its existence before calling it.
    onImageShow : function() ,

    // ... rest of settings ...

;

// Later on in the plugin:

nextButton.on( "click", showNextImage );

function showNextImage() 

    // Returns reference to the next image node
    var image = getNextImage();

    // Stuff to show the image here...

    // Here's the callback:
    settings.onImageShow.call( image );

我们不是通过传统方式(添加括号)启动回调,而是在 image 的上下文中调用它,这将是对 image 节点的引用。这意味着您可以通过回调中的 this 关键字访问实际的图像节点:

【讨论】:

以上是关于如何将自定义事件添加到 jQuery 插件模式中的主要内容,如果未能解决你的问题,请参考以下文章

php 如何将自定义过滤器字段添加到没有过滤器插件的Tribe事件日历(在此示例中 - 按类别和标记过滤)。示例:https:

如何将自定义挂钩添加到 Woocommerce 的自定义插件

如何将自定义 javascript 添加到 WordPress 管理员?

加入域时如何将自定义组自动加入到本地管理员组

如何将自定义 kong 插件添加到 dockerized kong

如何将自定义类添加到我的 JQuery UI Datepicker