ugrás a tartalomhoz

jQuery harmonika keszitese

zoliky · 2008. Jún. 10. (K), 17.42
Van egy HTML tablazat:
<tr> <!-- container 1 begin -->
   <td class="container"><img class="show_hide" src="images/collapsed.gif" alt="[+]" /></td>
</tr> <!-- container 1 end -->
<tr>
   <td>forum1</td>
   <td>0</td>
   <td>0</td>
   <td>n/a</td>
</tr>
<tr>
   <td>forum2</td>
   <td>0</td>
   <td>0</td>
   <td>n/a</td>
</tr>
<tr> <!-- container 2 begin -->
   <td class="container"><img class="show_hide" src="images/collapsed.gif" alt="[+]" /></td>
</tr> <!-- container 2 end -->
<tr>
   <td>forum3</td>
   <td>0</td>
   <td>0</td>
   <td>n/a</td>
</tr>
Kepen itt lathato: http://tinyurl.com/3osb99

A Javascript kodom a kovetkezot csinalja:

1. Egy esemenyt rendel a containerben talalhato IMG taghoz.
2. Ha raklikelek a container-ben levo kepre, a JS eltuntet minden tabla sort amely a klikelt container-hez tartozik.

Ime a kod:

$(document).ready(function()
{
	$('.show_hide').click(function()
	{
		var containerFound = false;
		
		$(this).parents('tr').nextAll().each(function()
		{
			$(this).children().children('.show_hide').each(function()
			{
				containerFound = true;
			});
			
			if (containerFound)
			{
				return false;
			}
			
			$(this).toggle();
		});
	});
});
Online itt lehet kiprobalni a szkriptet: http://www.progra.ro (usernev: progy, jelszo: progydemo)
Szoval mukodik, minden szep es jo :) De sajnos szeretnek valamit megoldani:

1. Ha raklikelek a containerben levo kepre (vagy a szovegre), szeretnek egy parancsot lefutatni de csak akkor ha a fenti kodom mar becsukta a tablazat sorokat. Ugyanezt akarom forditva csinalni, masodik kliknel egy amikor a sorok kinyiltak lefutatni egy masik kodot.

Sajnos nem sikerul. Probaltam igy:
$(document).ready(function()
{
	$('.show_hide').click(function()
	{
		var containerFound = false;
		
		$(this).parents('tr').nextAll().each(function()
		{
			$(this).children().children('.show_hide').each(function()
			{
				containerFound = true;
			});
			
			if (containerFound)
			{
				return false;
			}
			
			$(this).toggle();
		});
	});
	
	$('.show_hide').each(function()
	{
		$(this).toggle(function()
		{
		
			if ($(this).is(':hidden'))
			{
				$(this).attr("src", path + "/collapsed.gif");
			}
		}, function()
		{
			$(this).attr("src", "/progra/themes/progra/images/expanded.gif");
		});
	});
});
Sajnos nem tudja nekem a kovetkezo sor if ($(this).is(':hidden')) leelenorizni, hogy a sorok be voltak csukva.

Valaki tudna segiteni par tanacsal ? Koszonom!
 
1

Próba

Poetro · 2008. Jún. 10. (K), 23.51
if ($(this).is(':hidden'))
helyett
if ($(this).parents('tr:first').is(':hidden'))
Egyébként is minden
$(this).parents('tr')
-t lecserélnék
$(this).parents('tr:first')
-re, hogy csak a tényleges szülőjét csukja be, annak a szüleit sose.
2

ok

zoliky · 2008. Jún. 11. (Sze), 15.43
ez:
if ($(this).parents('tr:first').is(':hidden')) 
nem teljesul.
Ha tudna valaki egy kis segitseget nyujtani nagyon orulnek !
3

Igy mukodik

zoliky · 2008. Jún. 11. (Sze), 19.32
if ($(this).parents('tr').next().is(':hidden'))
{
    alert('ok');
}
A logikam szerint ez csak az utana kovetkezo tabla sort elenorzi! Mondjuk elvileg igy is mukodne.
Akkor mondana csodot a kod ha az elso sor becsukodik a tobbi nem.
4

siblings?

Poetro · 2008. Jún. 11. (Sze), 20.19
siblings('tr') ?
5

ok

zoliky · 2008. Jún. 11. (Sze), 20.25
es akkor ujbol le kell elenoriznem ha a tabla sor eljut a masodik containerhez? Ha megfigyeled az elso HTML kodot amelyet bekuldtem akkor tudni fogod mirol beszelek !