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:
  1. $(selector).click(function(){  
  2.    var $this = $(this);  
  3.    $.ajax({  
  4.       type: 'GET',  
  5.       url:  url,  
  6.       data: data,  
  7.       success: function()  
  8.       {  
  9.          $this.hide();  //működik  
  10.          $(this).hide(); //nem működik  
  11.       }  
  12.    });  
  13. }  
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.