18 Stimmen

Gibt es eine Möglichkeit, Kontext zu binden in jQuery übergeben?

Ich bin innerhalb eines Javascript-Objekts (vr roxx :) ), aber jedes Mal, wenn ich ein Ereignis binden mit jQuery muss ich den Kontext des Hauptobjekts Instanz durch die Daten-Parameter enthalten, um mit ihm zu arbeiten. Gibt es nicht eine einfache/nette Möglichkeit, dies in jQuery zu tun?

var oink = 
{
    pig: null,

    options:    
    {
        showPigMom: 0
    },

    init: function(pigObj)
    {

        //Show the pigmom
        $(this.doc).bind('keyup click', {o: this}, function(e)
        {
            var o = e.data.o;
            if (o.options.showpath)
                o.doWhatever();
        });

    ...

24voto

Karolis Punkte 2879

Ich benutze die $.proxy() Funktion

init: function(pigObj)
{
    //Show the pigmom
    $(this.doc).bind('keyup click', $.proxy(function(e) {
        if (this.options.showpath)
            this.doWhatever();
        $(e.currentTarget).text(); // use this to access the clicked element
    }, this));
}

4voto

beefyhalo Punkte 1551
init: function() {
    var self = this;
    $(this.doc).bind('keyup click', function() {
        if (self.options.showpath) self.doWhatever();
    });
}

2voto

Max Podriezov Punkte 890
init: function() {
    $(this.doc).bind('keyup click', function() {
       if (this.options.showpath) this.doWhatever();
       $(e.currentTarget).text(); // use this to access the clicked element
    }.bind(this))
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X