for(var j = 1; j <= 6; j++)
{
var el = document.getElementById("p" + x + j); //x to zmienna typu int
var p = "#p" + x + j;
if (el.innerHTML == '<img src="img/e.png">')
{
$(p).html('<img src="img/' + clr + '.png">'); //clr to zmienna typu str
$(p).css("cursor", "default");
$(p).click(function() {return false;});
$(p).dragstart(function() {return false;});
//el.onclick = function() {return false;}
//el.ondragstart = function() {return false;}
return;
}
}
Cześć.
Chcę zmienić właściwości pewnego obiektu (takiego, który zawiera odpowiedni kod HTML - w przeciwnym wypadku element jest pomijany, a pętla przechodzi do następnego): jego kod HTML, wygląd kursora, funkcje wywołane przy kliknięciu i próbie przeciągnięcia. Udało mi się uzyskać ten efekt przy użyciu selektora document.getElementByID, jednak stosując jQuery i selektor $("#id") tylko dwie właściwości zostają zmienione - kursor i zawartość HTML. Powyżej istotny fragment kodu.
Jeżeli zamiast linii
$(p).click(function() {return false;});
$(p).dragstart(function() {return false;});
Użyję
el.onclick = function() {return false;}
el.ondragstart = function() {return false;}
Wszystko jest w porządku.
W przypadku stosowania selektorów jQuery wszystko działa tak, jakby nie było tych dwóch linii kodu - nie zostaje zmieniona funkcja wywołana po kliknięciu oraz przy próbie przeciągania. Zawartość HTML i styl kursora po najechaniu na element zostają zmienione.
Wiem, że $(p) wybiera obiekt jQuery, który zawiera obiekt DOM normalnie wybierany przez document.getElementByID, ale używam metod jQuery - w takim razie dlaczego dwie linie kodu nie działają?
Ciekawi mnie ta sprawa i będę wdzięczny za pomoc.
PS. Musiałem przesunąć początek posta pod kod, ponieważ gdy jest na początku to zostaje do tego kodu dołączony - ktoś wie, jak się tego pozbyć? Usunięcie formatowania nie pomaga.