1

jquery UIスライダーの「slidechange」イベントにアタッチするKnockoutのカスタムバインディングがあります。

私が把握できないのは、このイベントが発生する場所です。jquery UI ソース コード内で「slidechange」をテキスト検索しても、何も表示されません。

だから私はこれが慣習ベースのアプローチだと推測しています - 問題は、イベントのためのjquery UIの慣習は何ですか?

4

1 に答える 1

3

このslidechangeイベントは、ユーザーがスライダーの位置を変更するたびに発生します。_changeコード内のメソッドを見ると、jquery.ui.slider.jsこれはイベントをトリガーするコード行です。

this._trigger( "change", event, uiHash );

_triggerwidgetEventPrefixは、最初のパラメーターの前にウィジェットの定義済み(この場合は)を付ける jQuery UI のウィジェット ファクトリのメソッドslideです。したがって、そのコード行が呼び出されると、slidechangeイベントにバインドされたすべてのハンドラーがトリガーされます。

イベントにサブスクライブする方法は 2 つあります。function1 つは、 を作成するときに inを渡すことsliderです。

$('my-selector').slider({
    change: function() {
        console.log('change');
    }
});

もう 1 つは、slidechangejQuery のbindoronメソッドを使用してイベントにサブスクライブすることです。

$('my-selector').on('slidechange', function() {
    console.log('change');
});

この例では、これらのイベントが両方とも発生していることがわかります - http://jsfiddle.net/tj_vantoll/XUyKs/

jQuery UI の API サイトには、各ウィジェットが起動するすべてのイベントが文書化されているだけでなく、それらをサブスクライブする方法の例も示されています。たとえば、slidechangeイベントに関するドキュメントはhttp://jqueryui.com/demos/slider/#event-changeです。

于 2012-07-14T18:18:33.150 に答える