Element pakken met jQuery
Onderstaand een klein stukje code. Als ik op input name example click, wil ik de data-position pakken van het parent. Dus example1 resulteert in Left en example2 in Right.
Ik weet dat ik $(this). iets moet gebruiken maar kom er niet uit. Bij de functie .find('.div_row') krijg ik altijd de data-position Left. Bij .parents() krijg ik niks, bij .parent() niks en bij .closest() krijg ik ook nils.
Groeten Donny
<div class="div_row" data-position="Left">
<input name="example1">
</div>
<div id="div_row" data-position="Right">
<input name="example2">
</div>
Code (js)
1
2
3
4
5
6
7
2
3
4
5
6
7
$('input').click(function(){
alert($(this).parent().attr('data-position');
});
//of
$('input').click(function(){
alert($(this).closest('div').attr('data-position');
});
alert($(this).parent().attr('data-position');
});
//of
$('input').click(function(){
alert($(this).closest('div').attr('data-position');
});
Opvallend trouwens dat de een een class heeft 'div_row' en de ander een id 'div_row'. Foutje bij het overtikken, of heb je dat echt zo?
Gewijzigd op 18/08/2014 22:04:20 door Erwin H
Toevoeging op 18/08/2014 22:29:36:
PS
data attributes zijn ontwikkeld om zaken simpeler te maken:
Gewijzigd op 18/08/2014 22:24:26 door Ger van Steenderen
Ha, ook weer wat nieuws geleerd. Dat gebruik van de data() functie van jQuery kende ik dan weer niet :-)
@ger, kan wel heel mn class neergooien, maar denk niet dat je van 1000 regels vrolijk word :)
Maar om op je vraag antwoord te geven jQuery.find geeft altijd het eerst gevonden element terug.
Maar oke, even kijken of ik het goed heb:
.find() zoekt vanaf huidige element naar beneden
.parent() pakt de eerste parent van het huidige element
.parents() pakt de opgegeven class/id naar boven tot ie de parent heeft bereikt met het id/class dat is opgegeven
.closest() kan ik niet echt uitleggen (misschien dat jij het kan voor degene die dit lezen)
Klopt mn lijstje een beetje?