Po kliknieciu get ajaxem, odbierana jest wiadomość JSON i jeśli w obiekcie zawiera się zmienna 'komunikat' jest wyświetlana w odpowiednim miejscu.
Dopóki głosowanie wyświetlało się na stronie pojedyńczego produktu wszystko było ok (wybierałem pole do wyświetlenia po klasie), teraz wyświetlane jest również na stronie z listą produktów, więc selector tego pola trzeba napisać sprytniej.
Takich bloków jest 9-90 na stronie:
jQuery(document).ready(function() { jQuery(".product_vote_yes").live("click",function() { var productVoteInfo = jQuery(this).parent().parent().parent().parent().children().filter( jQuery(this).is(":last-child") ); //ten selektor nie dziala, pytam o poprawny. jQuery.getJSON("/ajax_api.php?action=productVote&type="+jQuery(this).parent().attr("class")+"&vote=yes&id="+jQuery(this).attr("id") , function(data) { if(data != "") { if(data.komunikat) { productVoteInfo.addClass("debug"); } } } ); }); } );
Kluczowy moment w js to 4 linia. Potrzebuje selektora, który cofnie się w drzewie dom do tabelki, a potem wybierze td o klasie 'productVoteInfo'.