Pobieranie z drzewa DOM kilka elementów w jednym czasie ?

0

Witam,

Przykładowo mam taką tabelę (załóżmy, że komórek jest znacznie więcej):

<table id="tabelunia">
<tr>
	<td class="klik">...</td>	<td class="klik">...</td>
</tr>
<tr>
	<td class="klik">...</td>	<td class="klik">...</td>
</tr>
<tr>
	<td class="klik">...</td>	<td class="klik">...</td>
</tr>
</table>

User może sobie zaznaczyć jedną komórkę z tabeli albo nawet kilka (2,3...max_ilość_komórek). Zależy mi na tym, żeby teraz pobrać z tabelki wszystkie zaznaczone komórki przez user'a. Jak to zapisać (pobrać) do zmiennej w jQuery ? zapisać to do jakiejś tablicy ? Jakaś zmienna var?

Mam jeszcze coś takiego:

 
$(document).on("click", ".klik", function(){  
	var tab = new Array();

	$(".klik").each(function(){
		tab = $(this).val();
		});
		alert(tab);

});
0

Po prostu po kliknięciu rób sobie $(this).toggleClass('zaznaczony'); (dodatkowo masz od razu klasę do zmiany stylu css), a potem tylko selektor .zaznaczony i ot cała zabawa.

0

Ok, zmieniłem kod. Mam funkcję .toggleClass(); Tylko jest mały problem, w zasadzie duży. Głównie chodzi o to, że: Mam sobie kalendarz oparty na tabeli. Chcę zrobić opcję dla user'a, że po kliknięciu np 2 i 3 grudnia wyskakuje mu formularz do dodania zadań na te dni. Wiec w zasadzie może trochę niezbyt dokładnie opisałem swój problem.

Pytania:

  1. Jak wybraniu dnia albo dni przekierować go do formularza (może być metoda .hide() i show())
  2. Jak pobrać kliknięte selektory do zmiennej, ponieważ w nich są daty, które zapisze w bazie danych

Przykład komórki:

 <td class="modyfikuj"> <div class="day_null"> DATA </div> </td> 
0

Daj jakiś przykład z pełnym kodem html, a nie jakimś urwanym kawałkiem (niedomknięty tag) z dziwną klasą (day_null?)

0

Kalendarz jest napisany na PHP: http://codetidy.com/4214/
A sama tabela : http://codetidy.com/4213/

Wydaje mi się, że po .toggleClass, trzeba dodać jakieś zliczanie ilości elementów. np jak są wciśnięte dwie komórki to przerzuca mnie do formularza:) Tylko mówi, nie wiem jeszcze jak pobrać dane z komórek klikniętych, bo ich może być kilka, to zapisać jakoś do tablicy? czy jak?

0

Ale ty dużo piszesz.. Zapewne zauważyłeś, że tu zaglądam, a nie odpowiadam - nieszczególnie lubię takie topiki. Mniejsza o to, co kryje się pod hasłem "takie".

A prośba, bo jestem leniwy, a ty uparty: weź wrzuć jakiś konkretny (bez php-owych śmieci, których konkretych wartości muszę się domyślać) przykład na jsbin.com, do niego dopiszę Ci część javascript i tyle.

Ale generalnie leżysz na podstawach, a bierzesz się za rzeczy trudniejsze (co Ci już chyba wspominałem w topikach sprzed paru miesięcy).

0

http://jsbin.com/izovuj/4/edit
Chcę się po prostu nauczyć programować, jestem początkującym i było by miło dostać np dobre rady jak zacząć się uczyć i przejść na wyższy poziom ;) po za krytyką. Jestem uparty, bo zależy mi na programowaniu.

0
  • zapewne masz powiadomienia na pocztę o postach - zedytowałem link, miej to na uwadze**

Ale dobry programista do większości rzeczy dochodzi sam. Po to są setki materiałów w sieci i przede wszystkim - dokumentacje, żeby z nich korzystać.
A krytyka jest własnie najlepsza, bo od pochwał to raczej nie dojdziesz do wniosku "chyba faktycznie pasuje wziąć się do nauki" ;)

  1. ID jest wartością UNIKALNĄ. ID o określonej wartości może występować TYLKO RAZ na danej stronie. Popraw, bo choć teraz może to nie wpływać na działanie - to kiedyś możesz mieć przez to problemy.
  2. bgcolor jest stare i paskudne. Od tego masz CSS i klasy. Też nie ma znaczenia w Twoim problemie, ale jak się uczymy czegoś - to robimy to porządnie.
  3. Kod sprawdzamy validatorem. Validator nie jest świętym proroctwem, ale wyłapiesz takie kwiatki jak zduplikowane ID, źle zamknięte tagi (otwierasz <div>, zamykasz jakieś </di>).
  4. Używamy IDE (program, w którym piszesz kod) lepszego niż Windowsowy notepad. IDE także wyłapie Ci takie błędy, co nie wyłapie Ci IDE, to wyłapie validator. Choć faktem jest, że większość powinien wyłapać programista.
  5. <div class="na_ten_dzien_jest_juz_zadanie">. Domyśl się.
  6. Masz takie coś jak <thead>, <tbody>, <tfoot>, <th> - poczytaj do czego służą. Ogólnie sprawdź sobie: http://www.w3schools.com/tags/default.asp - każdy tag ogarnij sobie do czego jest.

Tu kod: http://jsbin.com/izovuj/8/

UWAGA! Nie poprawiałem po Tobie wszystkich ww. błędów.
Funkcja serialize produkuje coś takiego: dzien%5B%5D=14, to tłumaczy się na dzien[]=14 - i jest to po prostu tablica z dniami, widoczna po stronie php jako: $_GET['dzien'][0] = 14 (albo POST, w zależności jak wysyłasz formularz).

Wszystko czego nie rozumiesz - poszukuj i czytaj tak długo jak zrozumiesz, broń boże niczgo nie kopiuj na zasadzie "kiedyś doczytam", albo "a ciul, dał rozwiązanie to po co mam to umieć".

0

Ok, to mi się podoba. Zastosuję się do każdej wskazówki. Poprawie błędy w html oraz nie skopuję tego kodu w js. I będę czytał tak długo aż sam znajdę rozwiązanie. Dziękuję za wskazówki.

0

Przerobiłem na szybkości do wglądu: http://jsbin.com/izovuj/18 i czekam na krytykę. Nie mogę dodać tylko bordera do sekcji thead w tabeli. I chcę dodać jeszcze jeden fajny efekt/animację do kalendarza. Mianowicie w momencie kliknięcia pierwszego dnia, żeby każdy kolejny, który zostanie nad nim przesunięty kursor myszki został podświetlony. Tak jak w tym przykładzie: http://www.phpjabbers.com/availability-booking-calendar/demo.php. Mam za komentarzowaną pętlę z próbną wersją... Wszelkie uwagi mile widziane.

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