jQuery - generowana tabela, zmiana klas poszczególnych komórek

0

Witam, mam dziwny problem z jQuery.
Mam zrobiony program w którym ustalam sobie wymiary tabeli ("panel z diodami") i klikając na poszczególne komórki zmieniam im tło("zapalam diody"). Wszystko działa jak należy, ale do czasu gdy zmienię rozmiar tabeli. Po zmianie rozmiaru nie da się zmieniać styli komórek("zapalić diod"). Działa to tylko za pierwszym załadowaniem strony, gdzie rozmiar jest default.
Tabela jest generowana funkcją.
O to kod:


//Funkcja do generowania tabeli
function createDynamicTable(tbody, rows, cols) {
if (tbody == null || tbody.length < 1) return;
licznik_rows=0;
licznik_cols=0;
for (var r = 1; r <= rows; r++) {
var trow = $("");
if(licznik_rows%2==0) licznik_cols=0;
else licznik_cols=1;
for (var c = 1; c <= cols; c++) {
if(licznik_cols%2==0){
$("")
.addClass("LED")
.data("col", c)
.appendTo(trow);
}
else{
$("")
.addClass("NOT_LED")
.data("col", c)
.appendTo(trow);
}
licznik_cols++;
}
trow.appendTo(tbody);
licznik_rows++;
}
}

var wybrany_kolor="empty";
//Zmiana rozmiaru
$(function() {
$( "#dimension-select-x" ).change(function() {
var valueX;
$( "#dimension-select-x:selected" ).each(function() {
valueX=$("#dimension-select-x").val();
});
$("#leds tbody").remove();
$("#leds").append("</tbody>");
createDynamicTable($("#leds_body"), $("#dimension-select-x").val(),$("#dimension-select-y").val());
}).trigger( "change" );
$( "#dimension-select-y" ).change(function() {
var valueY;
$( "#dimension-select-y:selected" ).each(function() {
valueX=$("#dimension-select-y").val();
});
$("#leds tbody").remove();
$("#leds").append("</tbody>");
createDynamicTable($("#leds_body"), $("#dimension-select-x").val(),$("#dimension-select-y").val());
}).trigger( "change" );
//Wybranie koloru
$("#led-off").click(function(){
wybrany_kolor="empty";
$("#led-color-menu div").removeClass("color-choosen");
$(this).addClass("color-choosen");
});
$("#led-red").click(function(){
wybrany_kolor="red";
$("#led-color-menu div").removeClass("color-choosen");
$(this).addClass("color-choosen");
});

//Zapelenie diody
var isMouseClicked=false;
$('.LED').click(function(){
if(wybrany_kolor=="red")$(this).css("background-image","url(led_red2.png)");
else $(this).css("background-image","url(led_empty.png)");
})
.mousedown(function(){ isMouseClicked=true;})
.mousemove(function () {
if(isMouseClicked){
if(wybrany_kolor=="red")$(this).css("background-image","url(led_red2.png)");
else $(this).css("background-image","url(led_empty.png)");
}
});
$(document).mouseup(function () {
isMouseClicked=false;
})

});		

<select id="dimension-select-x" class="hover active"> <option value="30">15</option> <option value="60">30</option> <option value="120">60</option> <option value="150">75</option> </select> <select id="dimension-select-y" class="hover active"> <option value="30">15</option> <option value="60">30</option> <option value="120">60</option> <option value="150">75</option> </select>
```

W czym jest błąd? Pomóżcie.
Pozdrawiam i z góry dzięki :)

1

przypinasz zdarzenia do elementów, następnie je usuwasz, następnie tworzysz kolejne elementy znowu - ale do nich nie masz już zapiętych zdarzeń.

rozwiązanie: albo przypinasz zdarzenia po takiej akcji jeszcze raz, albo korzystasz z on do przypinania zdarzeń

0

Wiem mniej wiecej o co chodzi, zmieniłem click'i na on, ale dalej jest to samo. Bo jak mówisz, tworząc nowe tbody, tworzą się nowy komórki z klasami .LED, gdzie mam dodać drugi raz te same eventy dla .LED?

EDIT: Problem rozwiązany, wystarczyło wrzucić event .LED do funkcji która generuje tabele.

Dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1