2016-09-02 5 views
0

私はプラグインを作成しており、プラグインの内部から呼び出されているクリックイベントをエンドユーザーが制御できるようにする必要があります。jQueryプラグイン内の要素にclickイベントを添付するにはどうすればいいですか?

これを達成するにはどうすればいいですか?私はこれまでのところ、この時点件まで働いてきた:あなたはsettings.onNextを呼び出し、その戻り値を使用することができ、あなたのプラグインの中から

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

答えて

2

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

これは、ユーザーがプラグインを使用する方法です。

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

クールです。しかし、私はあなたがそれを投稿しようとしている間に私の質問を更新しました。要素にクリックイベントを添付する必要があります – asprin

+0

@asprin:私は自分の答えを更新しました。プラグインにクリックリスナーを追加することは、プラグインの外に追加することと変わりありません。 –

+0

ありがとうございます。私はそれがそうであると思ったが、確信が持てなかった。システムが私にできるようになるとすぐに受け入れてupvoting。 – asprin

関連する問題