我正在制作一个插件,需要允许最终用户控制从插件内部调用的点击事件。
我将如何实现这一目标?到目前为止,我已经完成了这一点:
(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
}
});
答案 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() {
...
});