PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS (https://www.php-resource.de/forum/html-javascript-ajax-jquery-css-bootstrap-less/)
-   -   jquery next selektor frage (https://www.php-resource.de/forum/html-javascript-ajax-jquery-css-bootstrap-less/101836-jquery-next-selektor-frage.html)

mcmurphy 28-06-2011 12:35

jquery next selektor frage
 
hi, habe mal ne kleine Verständnis Frage zu Selekoren bei next:

habe in einer Bildergallery folgende Struktur:

PHP-Code:

<div class="edit_container">
 <
div class="del_container">delete</div>
 <
img class="xyz" src="http://localhost/foo/lib/imgs/gallery/f1/043.jpg" alt="" />
</
div

an jedes Div der klasse del_container soll bei click eine funktion gebunden werden:
PHP-Code:

$('.edit_container .del_container').each(
  function(
i){
   $( 
this ).bind (
     
"click",
        function(){ 
         var 
src = $(this).next('img').attr('src');
         var 
foo = $(this).next('img').attr('class');
         
alert(foo);    // zur kontrolle
         /* der rest ...... *
       }
     );
  }
); 

das funktioniert wunderbar.
Jetzt brauche ich um das Image noch einen div Container
PHP-Code:

<div class="edit_container">
 <
div class="del_container">delete</div>
 <
div class="clip">
  <
img class="xyz" src="http://localhost/foo/lib/imgs/gallery/f1/043.jpg" alt="" />
 </
div>
</
div

dann müsste ich doch um an den Img Tag referenzieren zu können folgenden Selektor verwenden:
PHP-Code:

var src = $(this).next('div > img').attr('src'); 

alert(src); gibt mir dann aber ein undefined zurück
Laut Doku Child Selector (“parent > child”) – jQuery API & .next() – jQuery API
müsste dass doch aber richtig sein ?!?


PHP-Code:

var src = $(this).next().next().attr('src'); 

geht auch nicht!

Wo liegt mein Fehler bzw. kann mir einer mal das Brett vom Kopf entfernen?
THX

AmicaNoctis 28-06-2011 12:50

Hallo,

während dein Dokument jetzt weiter in die Tiefe geht, bleibst du flach auf der aktuellen Ebene. Versuch's mal mit
Code:

.next("div").children("img")
Nochmal zu deinem Selektor „div > img“. Der matcht nur img-Geschwister (die es in der aktuellen Ebene nicht gibt), deren Elternelement ein div ist. Dieser Selektor hätte in der ersten Version gepasst, als noch kein Container um das img drum herum war, da das Elternelement div.edit_container die Bedingung erfüllt hätte. CSS-Selektoren (und damit auch die von jQuery) gehen nie wie z. B. XPath selbst in die Tiefe, das musst du mit den Funktionen (next, children, ...) machen. Die Selektoren legen nur Bedingungen fest.

Gruß,

Amica

mcmurphy 28-06-2011 12:57

THX freundin der Nacht
so gehts

aber
div > img

da warste schneller als ich danke für die ausführliche antwort!

bedeutet doch auch "ein img innerhalb eines div" bzw. 2ein img als child-node eines div"
oder habe ich da was falsch verstanden?


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:54 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG