Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Jquery] Zmiana atrybutu.
paxton
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 22.06.2009
Skąd: Londyn, UK

Ostrzeżenie: (0%)
-----


Witam.

Otóż mam taki problem, posiadam siatkę zbudowana z komórek w tabelce, każda komórka ma dodatkowe atrybuty x="" i y="" teraz chce zrobić tak, aby po kliknięciu na guzik wywołała się funkcja, która doda 30 do tych atrybutów wiec jeśli x to 20 to po dodaniu będzie 50.

Próbowałem to robić na kilka sposobów lecz się nie udaje, zawsze Jquery zwraca mi 0 wydaje mi się ze jest tak dlatego ponieważ jest ok. 30 takich samych elementów, chce aby funkcja zmieniła je wszystkie.

Moim sposobem było to:

$("td [id=map]").each( function () {
var posx = $(this).attr('posx');
} );

I dalej funkcja zmieniająca, lecz już tutaj to nie działa ponieważ nie zwraca aktualnych danych.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




To w końcu jak nazywa się atrybut?
x czy posx ?
Go to the top of the page
+Quote Post
paxton
post
Post #3





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 22.06.2009
Skąd: Londyn, UK

Ostrzeżenie: (0%)
-----


Jeden to posx
a drugi to posy

czyli dwie osie
X i Y
Go to the top of the page
+Quote Post
batman
post
Post #4





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




To jeszcze podaj kod html takiej tabeli (oczywiście nie taki na 5 stron A4) i będziemy mogli Ci pomóc.
Go to the top of the page
+Quote Post
paxton
post
Post #5





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 22.06.2009
Skąd: Londyn, UK

Ostrzeżenie: (0%)
-----


  1. <?php
  2. echo "\t\n<td id=\"map\" posx=\"$x\" posy=\"$y\" style=\"background: url('".$data['floor']."');\" onClick='$(this).css(\"background\", \"url(\" + window.item + \")\"); save(\"map".$x.$y."\", ".$data['posy'].", ".$data['posx']."); copy(".$data['floor'].", \"./mapa/map".$x.$y.".gif\");' width=\"32\" height=\"32\" posx=\"".$x."\" posy=\"".$y."\"></td>";
  3. ?>


A tu juz wygenerowany:
  1. <td id="map" width="32" height="32" posy="posy" posx="20" onclick="$(this).css("background", "url(" + window.item + ")"); save("map2417", 17, 24); copy(window.item, "./mapa/map2417.gif");" style="background: transparent url(./items/0.gif) repeat scroll 0% 0%;"/>


Ten post edytował paxton 22.06.2009, 15:35:37
Go to the top of the page
+Quote Post
batman
post
Post #6





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Sorki, że nie odpisałem od razu. Coś mnie oderwało od komputera.
Kilka rzeczy rzuciło mi się w oczy:
1. Czy masz zdefiniowane kilka elementów o tym samym id (map)?
2. Zamiast dodawać onclick w td użyj do tego jQuery.
3. Nadal nie wiem, w którym momencie pobierasz ten atrybut. Rozumiem, że w funkcji save lub copy?
Go to the top of the page
+Quote Post
paxton
post
Post #7





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 22.06.2009
Skąd: Londyn, UK

Ostrzeżenie: (0%)
-----


W zadnej z tych funkcji, jest ona gdzies indziej.

Mam ok ~120 elementow o tym ID.
Go to the top of the page
+Quote Post
batman
post
Post #8





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Cytat(paxton @ 22.06.2009, 17:33:38 ) *
Mam ok ~120 elementow o tym ID.
I w tym tkwi właśnie problem. Id jak sama nazwa wskazuje musi być unikatowy. Zmień na class i powinno zadziałać.
Go to the top of the page
+Quote Post
paxton
post
Post #9





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 22.06.2009
Skąd: Londyn, UK

Ostrzeżenie: (0%)
-----


ID jest juz unikatowe.


Wygląda następując:

id="map;32,5"

W tym przypadku pozycja komórki to posx='32' posy='5'
Go to the top of the page
+Quote Post
batman
post
Post #10





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Nie napisałeś czy działa.
Go to the top of the page
+Quote Post
paxton
post
Post #11





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 22.06.2009
Skąd: Londyn, UK

Ostrzeżenie: (0%)
-----


Nie, nie dziala.

Moglbys mi napisac szablon funkcji:

Po kliknięciu pobiera atrybuty posx i posy ze wszystkich TD.

Bo to jest wlasnie to czego nie moge zrobic.
Go to the top of the page
+Quote Post
erix
post
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Gotowca? Wolne żarty...

Jak iterować pomiędzy obiektami, to pewnie wiesz; jest to główna funkcja jQ. A co do pobierania pozycji - split.
Go to the top of the page
+Quote Post
batman
post
Post #13





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Zgadzam się z przedmówcą. Uzupełnię jedynie jego wypowiedź:
- selektor klasy
- metoda each
- metoda attr
Jeśli nadal nie pobiera poprawnych współrzędnych, to pobierz atrybut id i przy pomocy funkcji, o której napisał ~erix, dobierzesz się do współrzędnych.
Go to the top of the page
+Quote Post
paxton
post
Post #14





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 22.06.2009
Skąd: Londyn, UK

Ostrzeżenie: (0%)
-----


Nie gotowca, bo to o co prosze jest jedynie 5% całej funkcji, i nie dosłownie pozycje bo kazda pozycja jest generowana przez PHP w funkcji for()

To jest to co napisalem:

$("td").each (
function() {
window.test = '';
window.test = $(this).attr("posx");
}
);

Dla szybkiego przykladu.

Ten post edytował paxton 22.06.2009, 16:56:44
Go to the top of the page
+Quote Post
batman
post
Post #15





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Twój kod jest poprawny i musi działać.
Jedyne co przychodzi mi do głowy, to wywołanie funkcji następuje zanim wygenerowane zostanie drzewo dom.
Go to the top of the page
+Quote Post
paxton
post
Post #16





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 22.06.2009
Skąd: Londyn, UK

Ostrzeżenie: (0%)
-----


Zwraca undefined.
Go to the top of the page
+Quote Post
erix
post
Post #17





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ok, a jak tę funkcję wywołujesz?
Go to the top of the page
+Quote Post
paxton
post
Post #18





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 22.06.2009
Skąd: Londyn, UK

Ostrzeżenie: (0%)
-----


Dobra naprawiłem już (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Dodałem po prostu nowe atrybuty name aby wyszukiwało dokładnie te które chce, dzięki za pomoc, dobre to forum (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 18:55