2

のような jquery ホバー バインディングを使用すると、jqueryはホバー$(".element").hover(functionHoverIn,functionHoverOut)された要素を として渡すようthisです。そのようです:

$('.element').hover(function(e) { 
         $(this).attr("data-hovered", "true");
         //do whatever else
     }, function(e) {
         //etc
     }
}

thisこれらの無名関数内でorを介して要素にアクセスできるので便利です$(this)。ただし、typescript と競合するようです。または、おそらく私は何かを理解していません:

class FancyHover {
    HoverElement:JQuery;

    constructor(HoverElement:JQuery) {
        this.HoverElement = HoverElement;
        this.HoverElement.hover(this.HandleHover, this.HandleHover);
    }

    HandleHover(event:JQueryEventObject):void {
        $(event.currentTarget).toggleClass("hovered");

        this.OtherFunction(); //Throws error
        //Uncaught TypeError: Object #<HTMLDivElement> has no method 'OtherFunction' 
    }

    OtherFunction():void {
        //do anything
    }
}

理想的には、無名関数の代わりに関数 ( などthis.HandleHover) を呼び出しに渡したいと考えています。.hover(functionIn,functionOut)ただし、これを行うと、FancyHover の現在のインスタンスを参照できなくなります。どうにかして現在のインスタンスを関数 HandleHover に渡すことができるでしょうか?

4

1 に答える 1