2009-05-17 7 views
0

jquery ajax 콜백 함수를 사용하여 테이블 셀의 배경색을 업데이트하려고하는데 작동하지 않습니다.jQuery - ajax 콜백 함수에서 CSS 속성을 설정할 수 없습니다.

I이 (방화범 오류를 생성하지 않음) 다음 코드를

$(".tariffdate").click(function() { 
    var property_id = $('#property_id').attr("value"); 
    var tariff_id = $('#tariff_id').attr("value"); 
    var tariff_date = $(this).attr("id"); 
    $.post("/admin/properties/my_properties/booking/edit/*", { property_id: property_id, tariff_id: tariff_id, tariff_date: tariff_date }, 
function(data){ 
    var bgcol = '#' + data; 
    $(this).css('background-color',bgcol); 
    alert("Color Me: " + bgcol); 
}); 

난 그냥 (6 자리 16 진수 코드) 다시 예상 데이터를 받고 있어요 확인하기 위해 경고를 추가했습니다, 그리고 나는 그렇습니다 -하지만 내 테이블 셀의 배경이 완강히 변하기를 거부합니다.

모든 표 셀에는 .tariffdate 클래스가 있지만 개별 ID도 있습니다. 테스트로

는, 그 클래스에 대한 호버 기능을 만드는 시도 :

$(".tariffdate").hover(function() { 
    $(this).css('background-color','#ff0000'); 
}); 

을 위의 잘 작동 - 내가 왜 내 콜백 기능이 작동하지 않습니다에 관해서는 정말 혼란 스러워요. 어떤 아이디어?

답변

2

AJAX 완료 핸들러에서 this의 인스턴스는 ajax 객체로 변경된다. this의 인스턴스를 오브젝트에 저장하고 해당 오브젝트를 사용해야합니다. 예 :

$(".tariffdate").click(function() { 
    var property_id = $('#property_id').attr("value"); 
    var tariff_id = $('#tariff_id').attr("value"); 
    var tariff_date = $(this).attr("id"); 
    var tariff = $(this); 
    $.post("/admin/properties/my_properties/booking/edit/*", 
     { property_id: property_id, tariff_id: tariff_id, tariff_date: tariff_date }, 
     function(data) { 
     var bgcol = '#' + data; 
     tariff.css('background-color',bgcol); 
     alert("Color Me: " + bgcol); 
     } 
    ); 
}); 
+0

당신은 별 문제입니다. 감사! – BrynJ

1

"this"변수가 아약스 콜백 함수에 있는지 확인하십시오. 나는 그것이 .tariffdate를 언급하지 않는다고 의심한다.

관련 문제