2016-09-02 2 views
0

Я создаю плагин и должен позволить конечному пользователю иметь возможность управлять событием клика, вызываемым изнутри плагина.Как подключить событие click к элементу внутри моего jQuery-плагина?

Как я мог бы достичь этого? Я до сих пор работал ДО этого момента:

(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 
    } 
}); 

ответ

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() { 
    ... 
}); 
+0

Прохладный. Но я обновил свой вопрос, пока вы собирались его опубликовать. Мне также нужно прикрепить событие click на элементе – asprin

+0

@asprin: я обновил свой ответ. Добавление прослушивателей кликов в плагине ничем не отличается от добавления их вне плагина. –

+0

Спасибо. Я думал, что так будет, но не уверен. Принимать и повышать, как только система позволяет мне. – asprin