2013-09-01 3 views
0

활성 클래스를 현재 클릭 된 페이지 매김 클래스로 변경하는 코드입니다. 제거하면 작동하지만 새 클래스를 추가해도 작동하지 않습니다. 내가 잘못 가고 어디Jquery 클래스 적용 및 클래스 제거

http://jsfiddle.net/spadez/qKyNL/35/

$('a').click(function(event){ 
    event.preventDefault(); 
    var number = $(this).attr('href'); 
    $.ajax({ 
     url: "/ajax_json_echo/", 
     type: "GET", 
     dataType: "json", 
     timeout: 5000, 
     beforeSend: function() { 
      $('#content').fadeTo(500, 0.5); 
     }, 
     success: function (data, textStatus) { 
      // TO DO: Load in new content 
      $('html, body').animate({ 
       scrollTop: '0px' 
      }, 300); 
      // TO DO: Change URL 
      $('#pagination li.active').removeClass("active");    
      $(this).parent().addClass("active"); 
     }, 
     error: function (x, t, m) { 
      if (t === "timeout") { 
       alert("Request timeout"); 
      } else { 
       alert('Request error'); 
      } 
     }, 
     complete: function() { 
      $('#content').fadeTo(500, 1); 
     } 
    });  
}); 

는 사람이 말해 주시겠습니까?

답변

1

이이 아약스 콜백 것은 당신이 될 것으로 기대 것이 아니다. 당신의 아약스 매개 변수이 추가

context: this, 

필요 없음을 시스템을 절약하고 jQuery를 이미이 기능이 같이 코드를 더 지저분하고 사용자 지정 개체를 만들 수 있습니다.

편집 :

$('a').click(function(event){ 
    event.preventDefault(); 
    var number = $(this).attr('href'); 
    $.ajax({ 
     context: this, 
     url: "/ajax_json_echo/", 

... 
+0

가 어떻게이 줄을하시기 바랍니다 구현하는 저를 보여줄 수 :이 경우는 같이해야합니까? – Jimmy

2

success 콜백의 this은 사용자 요소가 아닙니다.

당신은이 작업을 수행 할 수 있습니다

$('a').click(function(event){ 
    var element = this; // <= save the clicked element in a variable 
    event.preventDefault(); 
    var number = $(this).attr('href'); 
    $.ajax({ 
     ... 
     success: function (data, textStatus) { 
      ... 
      $('#pagination li.active').removeClass("active");    
      $(element).parent().addClass("active"); // <= use it 
     }, 
     ... 
    });  
});