Przeszukiwanie kolekcji

0

Mam następującą kwestię do rozwiązania. Mam jakąś strukturę HTML z elementami z konkretną klasą, jednak niekoniecznie te elementy muszą występować po sobie:

<div class="aktywny">
<div class="aktywny">
<div>
	<div class="aktywny">
</div>
<ul>
	<li><div class="aktywny"></li>
</ul>

Chcę napisać pugin, który po kliknięciu na dany element powoduje, że jego poprzednik i następnik np. dostają jakiegoś koloru tła. Oczywiście prev() i next(), czy inne poruszanie się w taki sposób po drzewie DOM odpada, bo nie znamy struktury HTML. Na razie wygląda to u mnie tak:

//wywołanie plugina:
$('.aktywny').zmien_kolor();

$.fn.zmien_kolor = function() {
	var $kolekcja = this;
	
	$kolekcja.click(function(){
		var $klikniety = $(this);
		
		//no i tutaj nie wiem jak namierzyć poprzedni i następny
		$klikniety.znajdz_ziomkow().css('background','red');
	});
}

Jakieś pomysły?

0

$kolekcja.css() ? jeżeli akurat klikniętemu ma się nie zmieniać kolor no to jeszcze filter wejdzie.

0

Ale mi nie jest potrzebna cała kolekcja, a tylko np. następny element w kolekcji po klikniętym (potrzebuję mieć dostęp do niego, żeby prócz zmiany koloru pobrać jeszcze jego atrybuty).

0

A wiesz czy wszystkie przeglądarki zwrócą elementy w tej samej kolejności? :> Trzeba poszukać czy jakaś nie szuka np. najpierw po rodzeństwie, a potem po dzieciach (bo wydaje mi się, że naturalnym algorytmem jest pierwsze przeszukiwanie dzieci, potem rodzeństwo - ale szczerze to nawet tego nie wiem).

Anyway - iterujesz po kolekcji i używając is porównujesz do klikniętego elementu. Jak pasuje - to następny element to ten, którego szukasz (podpowiedź: nie zawsze następny element będzie istniał).

Edit: Jest jeszcze index - Google jak zawsze dało odpowiedź w 2 sekundy ;) -> http://stackoverflow.com/questions/981981/using-jquery-to-get-the-next-or-previous-element-from-a-selection

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