2008-09-30 10 views
5

मैं अगर एक ajax उस तत्व पर आधारित कॉल सफल हुआ एक तत्व के वर्ग को संशोधित करने केमैं jquery AJAX सफलता फ़ंक्शन में कॉलिंग डोम तत्व का संदर्भ कैसे दूं?

<script type='text/javascript'> 
$("#a.toggle").click(function(e){ 
    $.ajax({ 
     url: '/changeItem.php', 
     dataType: 'json', 
     type: 'POST', 
     success: function(data,text){ 
      if(data.error=='') 
      { 
       if($(this).hasClass('class1')) 
       { 
        $(this).removeClass('class1'); 
        $(this).addClass('class2'); 
       } 
       else if($(this).hasClass('class2')) 
       { 
        $(this).removeClass('class2'); 
        $(this).addClass('class1'); 
       } 
      } 
      else(alert(data.error)); 
     } 
    }); 
    return false; 
}); 
</script> 
<a class="toggle class1" title='toggle-this'>Item</a> 

समस्या का मेरे समझ है कोशिश कर रहा हूँ कि सफलता समारोह में इस संदर्भ ajax वस्तु पैरामीटर, कॉलिंग डोम तत्व नहीं है जैसे क्लिक फ़ंक्शन के अन्य स्थानों में होता है। तो, मैं कॉलिंग डोम तत्व का संदर्भ कैसे दूं और कक्षाओं को चेक/एड/हटा दूं?

उत्तर

16

आप इसे एक चर में संग्रहीत कर सकते हैं। उदाहरण:

$("#a.toggle").click(function(e) 
{ 
    var target = $(this); 
    $.ajax({ 
     url: '/changeItem.php', 
     dataType: 'json', 
     type: 'POST', 
     success: function(data,text) 
     { 
     if(data.error=='') 
     { 
      if(target.hasClass('class1')) 
      { 
       target 
        .removeClass('class1') 
        .addClass('class2'); 
      } 
      else if(target.hasClass('class2')) 
      { 
       target 
        .removeClass('class2') 
        .addClass('class1'); 
      } 
     } 
     else(alert(data.error)); 
     }  
    }); 
    return false; 
}); 
5

jQuery आपके हैंडलर फ़ंक्शन पर इसके बारे में कुछ अन्य जानकारी के साथ ईवेंट का लक्ष्य पास करता है। इसके बारे में अधिक जानकारी के लिए http://docs.jquery.com/Events_%28Guide%29 देखें।

आपके कोड में, इसे $ (e.target) जैसे संदर्भित किया जाएगा।

2

मुझे पता है कि यह पुराना है लेकिन आप क्लिक फ़ंक्शन से 'ई' पैरामीटर का उपयोग कर सकते हैं।

3

बेहतर सेट AJAX पैरामीटर: context: this। उदाहरण:

$.ajax({ 
    url: '/changeItem.php', 
    dataType: 'json', 
    type: 'POST', 
    context: this, 
    success: function(data,text){ 
     if(data.error=='') 
     { 
      if($(this).hasClass('class1')) 
      { 
       $(this).removeClass('class1'); 
       $(this).addClass('class2'); 
      } 
      else if($(this).hasClass('class2')) 
      { 
       $(this).removeClass('class2'); 
       $(this).addClass('class1'); 
      } 
     } 
     else(alert(data.error)); 
    } 
}); 
+0

संदर्भ हल का उपयोग करते हुए मेरे लिए समस्या हल –

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