如何将click事件附加到我的jQuery插件中的元素?

时间:2016-09-02 11:53:59

标签: jquery jquery-plugins

我正在制作一个插件,需要允许最终用户控制从插件内部调用的点击事件。

我将如何实现这一目标?到目前为止,我已经完成了这一点:

(function($) {
    $.fn.multiForm = function(options) {
        var settings = $.extend({
            titles : [],
            nextButton: 'nl-next',
            prevButton: 'nl-prev',
            onNext: function(){}
        }, options);

        //#1 I first need to attach a click event on settings.nextButton element
        //#2 So when that button is clicked, I want the user to use oNext() and return true or false which I will then capture inside this plugin

        this.each( function(options) {  
            // some plugin code 
        });
    }
}(jQuery));

这是用户使用插件的方式:

$('#someID').multiForm({
   onNext:function(){
     // return either true or false
     // I need to capture this return value
   }
});

1 个答案:

答案 0 :(得分:2)

在插件中,您可以调用settings.onNext并使用其返回值。

if(typeof settings.onNext === 'function') {
   var result = settings.onNext();
   if(result) { ... }
}

您可以像点击任何其他按钮一样将点击事件附加到nextButton

$(setting.nextButton).click(function() { 
   ...
});

请注意nl-next不是有效的jQuery选择器。这是一个班级名字吗?如果是,请务必将.添加到选择器。

另请注意,您可能希望传递一些上下文,以确保您不会将侦听器添加到此类的所有按钮,以防页面上有多个插件实例。

$('.' + setting.nextButton, someDivWrappingMyPlugin).click(function() {
   ...
});