ugrás a tartalomhoz

jQuery AJAX callback függvényen belüli this

pinguka · 2011. Május. 29. (V), 11.02
Sziasztok!

Az lenne a kérdésem, hogy miért vn az, hogy ha egy eseménykezelőben van egy ajax kérésem, akkor abban csak úgy tudok hivatkozni az adott elemre, hogy a "$(this)"-t eltárolom egy változóban pl. így "$this".
Példakód:

$(selector).click(function(){
   var $this = $(this);
   $.ajax({
      type: 'GET',
      url:  url,
      data: data,
      success: function()
      {
         $this.hide();  //működik
         $(this).hide(); //nem működik
      }
   });
}
Tehát ennek mi az oka?
Előre is köszönöm a magyarázatot.
 
1

closure context

razielanarki · 2011. Május. 29. (V), 12.38
ez azért van mert amikor lefut a kérésed, a callback függvény más contextusból hívódik meg, mint ahol defináltad. (azaz a függvényben a this értéke más lesz, pl a window-ra hivatkozik).

így viszont elmented a contextust, azaz a this változó értékét egy másik változóba (itt a $this, de én pl self-nek szoktam hívni), amit a closure scoping szabályai alapján a callback fv is lát, és hozzáférsz az eredeti elemhez.
2

context

Poetro · 2011. Május. 29. (V), 22.01
Az ajax függvénynek megadhatsz egy context nevezetű paramétert, mellyel meghatározhatod, mi legyen a this értéke a callback függvényeken belül.