2016-07-25 8 views
5

मैं टहनी में इस कोडबदलें बटन कार्यक्षमता jQuery

{% if followsId == null %} 
      <div id="followUser" class="follow" data-userId="{{ profileUserData.id }}" data-currentUserId="{{ loggedUserData.id }}" data-action="follow"> 
       Follow 
      </div> 
{% else %} 
      <div id="unFollowUser" class="follow" data-followsId="{{ followsId }}"> 
       Unfollow 
      </div> 
{% endif %} 

मैं सिर्फ इस कोड के साथ क्लिक पर बटन के लिए सामग्री और कार्यक्षमता को बदलना चाहते हैं और

$('#followUser').click(function() { 
    var userId  = $(this).attr('data-userId'), 
     action  = $(this).attr('data-action'), 
     currentUser = $(this).attr('data-currentUserId'); 

    $.ajax({ 
     method: 'POST', 
     url: "/sci-profile/profile/follow", 
     data: { 
      userId: currentUser, 
      profileUserId: userId, 
      action: action 
     }, 
     success: function(response) 
     { 
      $('#followUser').attr('id', 'unFollowUser') 
          .text('Unfollow') 
          .fadeOut(50) 
          .delay(50) 
          .fadeIn(50); 
     } 
    }); 
}); 

jQuery

के साथ इस कोड की कोशिश की है पेज स्रोत पर मैं बटन पर अलग-अलग आईडी और अलग-अलग पाठ देखता हूं लेकिन दूसरी बार क्लिक करते समय मैं पहले बटन को कॉल करता हूं जैसे कि यह कभी नहीं बदला था। क्या उस तत्व के लिए स्मृति को रीफ्रेश करने का कोई तरीका है या मैं शुरुआत से गलत काम करता हूं?

+0

मैं हा आशा डी इस प्रश्न के साथ समाधान मिला: ** http: //stackoverflow.com/questions/38686742/reload-js-function-when-load-element-with-ajax** –

उत्तर

4

मुझे लगता है कि अपने कोड इस

{% if followsId == null %} 
      <div data-action="follow" class="follow" data-user-id="{{ profileUserData.id }}"> 
       Follow 
      </div> 
{% else %} 
      <div data-action="unfollow" class="follow" data-user-id="{{ followsId }}"> 
       Unfollow 
      </div> 
{% endif %} 

वर्तमान प्रयोक्ता आईडी में लॉग इन स्टोर करने के लिए, क्योंकि आप इसे सत्र :) से प्राप्त कर सकते हैं कोई ज़रूरत नहीं चाहते चाहिए

आपका अजाक्स कोड इस

की तरह होना चाहिए
$('.follow').click(function() { 
    var _this= $(this); 
    var userId = $(this).data('user-id'); 
    var action =$(this).data('action'); 

    $.ajax({ 
     method: 'POST', 
     url: "/sci-profile/profile/follow", 
     data: { 
      profileUserId: userId, 
      action: action 
     }, 
     success: function(response) 
     { 
      if(action=="follow") 
      { 
       _this.attr('data-action', 'unfollow').text('Unfollow'); 
      } 
      else 
      { 
       _this.attr('data-action', 'follow').text('Follow'); 
      } 
     } 
    }); 
}); 

आप मेरा उत्तर पसंद है और इसे वोट, के रूप में सही चिह्नित करते हैं कि यह सही है :)

+2

+1, और आप '$ का उपयोग करना चाहेंगे (दस्तावेज़) .on ("क्लिक करें", "फॉलो करें", फ़ंक्शन (ईवेंट) {var $ this = event.target; .. 'गतिशील रूप से संलग्न (AJAX शायद) बटन के लिए। –

+0

ओह धन्यवाद .... मैंने आपकी HTML सामग्री को AJAX से लोड नहीं किया है। –

+0

यह मेरा सवाल नहीं है :) मैं सिर्फ आगे सोच रहा हूं जैसे कि यह पूछताछ की अगली समस्या होगी :) –

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