Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

jQuery ja elementin "exclude"

4 views
Skip to first unread message

Sami Lahtinen

unread,
Jan 30, 2012, 6:38:48 AM1/30/12
to
Osaisikohan kokeneemmat jeesata jQuery-noviisia alla olevan ongelman
kohdalla.

Eli minulla on seuraava pätkä jQueryä.

jQuery( function( $ ) {
$( '.hidden + *' ).hide();
$( '.toggle-next' ).click( function() {
$( this ).next.slideToggle( 'fast' );
return false;
} );
} );

Ja html-taulukon elementit.

<tr class="toggle-next">
<td>foo</td>
<td><a href="bar"><img class="link" src="open.png" /></a></td>
</tr>

<tr>
<td colspan='2'>hide or show</td>
</tr>

Homma toimii niinkuin oletettuakin, eli riviä klikkaamalla alempi rivi
tulee näkyviin. Ongelmaksi muodostuu se, että rivillä oleva linkki (tai
vaikka kyseinen solu) ei saisi tehdä togglea, vaan sen pitäisi
luonnollisesti avata kyseisen linkin kohde.

Googlea on heiluteltu ja useampaa eri ratkaisumallia rakenneltu, mutta
oikeaa versiota ei tunnu löytyvän.

Kiitokset jo etukäteen

--
Sami Lahtinen

Jukka K. Korpela

unread,
Jan 30, 2012, 9:22:42 AM1/30/12
to
2012-01-30 13:38, Sami Lahtinen kirjoitti:

> Homma toimii niinkuin oletettuakin, eli riviä klikkaamalla alempi rivi
> tulee näkyviin.

Homman toimivuus tuossa mielessä taitaa edellyttää asioita, joita
postaamassasi koodissa ei ole. Mutta mitä tulee poissulkemiseen...

> Ongelmaksi muodostuu se, että rivillä oleva linkki (tai
> vaikka kyseinen solu) ei saisi tehdä togglea, vaan sen pitäisi
> luonnollisesti avata kyseisen linkin kohde.

...niin yksinkertaisin ratkaisu esittämässäsi tapauksessa on, että
tapahtumankäsittely liitetään suoraan vain siihen soluun, johon se
halutaan liittää. Esimerkiksi korvataan rivillä

$( '.toggle-next' ).click( function() {

hipsukoissa olevaksi valitsimeksi

'.toggle-next td:first-child'

--
Yucca, http://www.cs.tut.fi/~jkorpela/

Sami Lahtinen

unread,
Jan 30, 2012, 11:12:08 AM1/30/12
to
Kiitokset tästä.

Hieman viritellen ja edellisen postaukseni typoja korjaillen homma lähti
toimimaan. Lopputuloksena seuraava tuotti halutun lopputuloksen ja
jQueryn toimintakin avautui hieman paremmin.

jQuery( function( $ ) {
$( '.toggle-next + *' ).hide();
$( '.toggle-next td:first-child' ).click( function() {
$( this ).parent().next().slideToggle( 'fast' );
return false;
} );
} );

--
Sami Lahtinen
0 new messages