0
jQuery.widget("ui.test",{
    _init: function(){
        $(this.element).click(this.showPoint);
    },

    showPoint: function(E){
        E.stopPropagation();
        alert(this.options.dir);
    }
}

$('#someEleme').test();

現在、私が書いた方法では、optionsオブジェクトは showPoint
イベント ハンドラー内で定義されていません。jQueryウィジェットでこの値を渡す正しい方法は何ですか?

4

1 に答える 1

1

showPoint関数が呼び出されるコンテキストについてです。あなたの場合、jQueryイベントハンドラーに関数を指定しました。これにより、jQueryはevent.target要素のコンテキストで関数を呼び出します。を使用してこれを上書きできますjQuery.proxy()。コードでは、次のようになります。

jQuery.widget("ui.test",{
    _init: function(){
        $(this.element).click($.proxy(this.showPoint, this));
    },

    showPoint: function(E){
        E.stopPropagation();
        alert(this.options.dir);
    }
}

これthisにより、showPoint関数内の変数が上書きされるため、のようなものは使用できなくなります。実際$(this).hide()には、を使用する必要があります。$(E.target).hide()$(this.element).hide()

于 2012-01-28T22:26:39.387 に答える