2012-07-31 2 views
0

jQuery에 이상한 문제가 있고 클래스를 추가 및 제거하고 있습니다. 특정 하이퍼 링크에 대해 특정 CSS 속성을 추가/제거하려면 addClassremoveClass을 호출해야한다는 json 요청의 성공 여부를 확인하려고합니다. 내가 그것을 클릭하면, 그것은 결코 작동하지만, 내가 CSS 클래스를 독립적으로 시도 할 때, 그들은 잘 동작한다. 내가 여기서 누락 된 것이 있습니까? 의견을 보내 주셔서 감사합니다. 당신이 원하는 방법이 this을 사용할 수 있도록 이벤트 핸들러에서jquery addClass and removeClass issues

+1

'$ (이)''당신'$ .getJSON' 요청의 내부에 더 이상'$에 대한 참조 ('add_link')입니다. 요청 외부에서 참조를 저장해야합니다. 'var me = $ (this);''$ .getJSON' ... 그리고 마지막으로 if 문 안에서'me.removeClass()'... 등등, 이것은 잘 할 것입니다. – Ohgodwhy

답변

1

$(document).ready(function() { 
    $('.add_link').bind("click", function(e) { 
     $.getJSON("/add/", function(json) { 
      if (json.SUCCESS != null) { 
       $(this).removeClass('blue_button_link').addClass('gray_out_button_link'); 
      } 
     }); 
    }); 
}); 
당신은, 다른 컨텍스트를 가지고있다. 시도하지 :

$(document).ready(function() { 
    var link = $('.add_link'); 

    link.bind("click", function(e) { 
     $.getJSON("/add/", function (json) { 
      if (json.SUCCESS != null) { 
       link.removeClass('blue_button_link').addClass('gray_out_button_link'); 
      } 
     }); 
    }); 
}); 

또는를 :

$(document).ready(function() { 
    $('.add_link').bind("click", function(e) { 
     var link = $(this); 

     $.getJSON("/add/", function (json) { 
      if (json.SUCCESS != null) { 
       link.removeClass('blue_button_link').addClass('gray_out_button_link'); 
      } 
     }); 
    }); 
}); 
+0

+1 설명 – KVISH

2
$(document).ready(function() { 
    $('.add_link').bind("click", function(e) { 
     // cache it in a local variable. 
     var $this = $(this); 
     $.getJSON("/add/", function(json) { 
      if (json.SUCCESS != null) { 
       $this.removeClass('blue_button_link').addClass('gray_out_button_link'); 
      } 
     }); 
    }); 
});