1

スライダーが特定のスライド関数で初期化された後、jQuery UI スライダーのスライド メソッドをオーバーライド/上書きしたいと考えています。

関連するコードを以下に示し、このJSFiddleに示します。

$(function() {
    var myslider = $("#myslider");
    $( myslider ).slider({
        slide: function( event, ui ) {
            console.log("sliding AAAAA");
        } //end slide function
    });//end slider definition

    //how do I unbind the original slide action?
    $(myslider).off("slide");     //doesn't work
    $(myslider).unbind("slide");  //doesn't work

    $(myslider).on("slide", function( event, ui ) {
        //I want this to be the only action fired.
        console.log("sliding BBBBB");
    });
});

上記の例/フィドルでは、ユーザーがスライダーをスライドさせると、両方のアクションがまだ起動しています。slide2番目のメソッドのみが起動され、最初のメソッドが上書きされるようにするにはどうすればよいですか?

ありがとう!

編集

これがこれを行う「正しい」方法かどうかはわかりませんが、うまくいくようです:

$(myslider).slider("option","slide","");

おそらく、これを自分の質問への回答として入力する必要がありますか? しかし、より明確で設計されたより良い方法があると思いますので、それを開いたままにします。

4

1 に答える 1

1

これは、私自身の質問に対する最良の答えです。

$(myslider).slider("option","slide",""); //clear the slide option

それを行うためのより良い、よりクリーンな、またはより「jQuery」な方法がある場合は、投稿してください。

編集

または、@FrédéricHamidi のコメントが示唆するように、slideオプションを (空の文字列ではなく) null に設定します。どちらも既存の関数を上書きする効果がありますslide

$(myslider).slider("option","slide",null); //clear the slide option
于 2013-02-18T18:38:24.987 に答える