2009-05-17 7 views
0

Ich versuche, eine Jquery Ajax Callback-Funktion zu erhalten, um die Hintergrundfarbe einer Tabellenzelle zu aktualisieren, aber ich kann es nicht zum Laufen bringen.jQuery - kann nicht css propery in Ajax Callback-Funktion setzen

Ich habe den folgenden Code (die keine Fehler in Firebug produziert):

$(".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); 
}); 

Ich habe den Alarm hinzugefügt nur um zu bestätigen Ich erhalte die erwarteten Daten zurück (eine 6-stellige Hexadezimal-Code), und ich bin - aber der Hintergrund meiner Tischzelle weigert sich hartnäckig, sich zu ändern.

Alle Tabellenzellen haben die Klasse .tariffdate, haben aber auch eine individuelle ID.

Als Test habe ich versucht, für diese Klasse eine Hover-Funktion zu erstellen:

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

Die oben funktioniert gut - also bin ich wirklich verwirrt, warum meine Callback-Funktion funktioniert nicht. Irgendwelche Ideen?

Antwort

2

In dem AJAX-abgeschlossenen Handler wird die Instanz von this in das Ajax-Objekt geändert. Sie müssen die Instanz this in einem Objekt speichern und dieses Objekt verwenden. Zum Beispiel:

$(".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

Sie sind ein Star - das war das Problem. Vielen Dank! – BrynJ

1

Überprüfen Sie, was die Variable "this" in Ihrer Ajax-Callback-Funktion ist. Ich vermute, dass es sich nicht um .tariffdate handelt