मैं एक फॉलो बटन बना रहा हूं, और बटन को एक अलग रूप देने के लिए मैं कक्षा के नाम बदल रहा हूं।

दुर्भाग्य से, मेरी कक्षाओं की अदला-बदली नहीं हो रही है क्योंकि कोड में 'यह' वस्तु बदल रही है।

मैं उस मूल वस्तु को कैसे प्राप्त करूं जिसे मैंने चुना है ताकि मैं कक्षाओं को स्वैप कर सकूं?

// Follow button
$('input.follow_user_button').live('click', function() {

        $.ajax({
            type: "POST",
            url: "ajax/follow.php",
            data: {
                follow_user_id: $(this).attr('data-follow-user-id')
            }, 
            dataType: "json",
            success: function(follow_response) {

                if (follow_response.result == "success")
                {
                    if (follow_response.action == "success_follow")
                    {
                        // Set the follow button to followed class style THIS DOESNT WORK
                        $(this).attr('value', 'Unfollow').removeClass('follow_button_follow').addClass('follow_button_unfollow');
                    }
                    else if (follow_response.action == "deleted_follow")
                    {
                        // Set the follow button to the unfollowed class style THIS DOESNT WORK
                        $(this).attr('value', 'Follow').removeClass('follow_button_unfollow').addClass('class', 'follow_button_follow');
                    }
                }
                else if (follow_response.result == "failure")
                {
                    alert(follow_response.error_message);
                }

            },
            error: function() {
                alert("Sorry there was an error, please refresh and try again.");
            }
        });

    });

सधन्यवाद,

ल्यूक

0
Luke 23 सितंबर 2011, 15:49
1
इसे var thisRef = this; जैसे वेरिएबल में स्टोर करें और इसका इस्तेमाल करें
 – 
Igor Dymov
23 सितंबर 2011, 15:51
का संभावित डुप्लिकेट ए>।
 – 
Frédéric Hamidi
23 सितंबर 2011, 15:55

1 उत्तर

सबसे बढ़िया उत्तर

आपको $(this) को $.ajax से पहले स्टोर करना चाहिए, उदा.

var self = $(this);

$.ajax({ ...
   success: function()
   {
      self.attr(...);
   }
});

$(this) का कई बार उपयोग न करें, यह करना अतिश्योक्तिपूर्ण है, इसे एक चर में डाल दें, फिर बाद में संदर्भ के लिए इसका उपयोग करें।

4
MacMac 23 सितंबर 2011, 15:52