2011-10-12 18 views
18

मैं जावास्क्रिप्ट ऑब्जेक्ट (vr roxx :)) के अंदर हूं, लेकिन हर बार जब मैं jQuery के साथ एक ईवेंट बाध्य करता हूं तो मुझे इसके साथ काम करने के लिए डेटा पैरामीटर के माध्यम से मुख्य ऑब्जेक्ट इंस्टेंस के संदर्भ को शामिल करना होगा। JQuery में ऐसा करने के लिए कोई आसान/साफ तरीका नहीं है?क्या jQuery में बाध्य करने के लिए संदर्भ पास करने का कोई तरीका है?

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(); 
     }); 

    ... 
+8

... और इस वस्तु में वह एक सुअर था: ओ, e.data.o .... – Blazemonger

उत्तर

23

मैं $.proxy() फ़ंक्शन का उपयोग

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)); 
} 
3
init: function() { 
    var self = this; 
    $(this.doc).bind('keyup click', function() { 
     if (self.options.showpath) self.doWhatever(); 
    }); 
} 
+1

$। प्रॉक्सी() या _.बिंद() को पुराने संदर्भ में स्पष्ट संदर्भ चर के साथ प्राथमिकता दी जानी चाहिए – mPrinC

+1

'प्रॉक्सी' क्लीनर दिखता है, लेकिन पुराने स्कूल, @mPrinC के साथ क्या गलत है? – seebiscuit

2
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)) 
} 
संबंधित मुद्दे

 संबंधित मुद्दे