2010-08-03 10 views
19

Donc, je veux obtenir le premier 'a' dans cette div. Cela me rend vraiment fou. Merci pour toute aide.Comment obtenir le premier élément interne?

<div id="PGD" class="album" onmouseover="load(this)"> 
    <a class="dl" href="#">DOWNLOAD</a> 
</div> 

javascript

function load(dl) 
{ 

var ID = $(dl).attr('id'); 
var elemnt = $('ID:first').attr('id'); 

} 

Répondre

31

non jQuery: (n'a pas été taggés avec jQuery avant, donc je compris ce)

  • Si vous voulez obtenir la premier élément enfant uniquement:

    var element = document.getElementById('PGD').children[0]; 
    
  • Si vous voulez obtenir le premier élément d'ancrage:

    var element = document.getElementById('PGD').getElementsByTagName('a')[0]; 
    

Avec jQuery:

var element = $('#PGD').find('a:first'); 
// or, to avoid jQuery's pseudo selecors: 
// var element = $('#PGD').find('a').first(); 

et en fait votre fonction peut être juste

function load(dl) 
{  
    var element = $(dl).find('a:first'); 
} 

Mise à jour:

Comme vous utilisez jQuery, je suggère de ne pas attacher le gestionnaire de clic dans votre balisage HTML. Faites-la manière jQuery:

$(function() { 
    $("#PGD").mouseover(function() { 
     $(this).find('a:first').attr('display','inline'); 
     alert($(this).find('a:first').attr('display')); 
    }); 
}); 

et votre HTML:

Voyez vous-même: http://jsfiddle.net/GWgjB/

+0

oui j'ai essayé ceci. pas d'amour. Ce que j'essaie de faire avec ceci est de définir l'attribut d'affichage du lien de none à inline. Donc je faisais ce que tu as avec .attr() attaché. – JamesTBennett

+0

charge de fonction (dl) { élément var = $ (dl) .Find ('a: first'). Attr ('affichage', 'en ligne'); } – JamesTBennett

+0

@creocare: S'il vous plaît voir ma réponse mise à jour. Le précédent devrait également fonctionner, mais peut-être que vous ne définissez pas 'load' dans la portée globale. Jetez un oeil à la console de votre navigateur pour vérifier les erreurs. –

0
$(ID).find(':first') 

Voir find commande jQuery.

$('#PGD').find('a:first') 

Je n'ai pas actualy mal à comprendre, donc je suis en train correcte votre fonction, de préciser pour vous:

function load(dl) 
{ 

// var ID = $(dl).attr('id'); 
// var elemnt = $('ID:first').attr('id'); // Here is error-mast be like $(ID+':first') 

var ID = $(dl).attr('id'); 
var elemnt = $(ID).find('*:first').attr('id'); 

} 

Je supose dl qui est $('#PGD'). Mais l'élément enfant A n'a pas d'attribut id, qu'essayez-vous de trouver?

Voir aussi: http://api.jquery.com/category/selectors/

+0

Ouais je l'ai essayé, mais il ne fonctionne toujours pas. Je ne vais pas faire le second parce que ce n'est pas assez dynamique. – JamesTBennett

+0

Vous pouvez installer chrome, firefox ou un safari pour sortir vos objets via la console. Après cela, il sera plus clair pour vous. PS: Dans le Chrome c'est Ctrl + I – ajile

0
$("#PGD").children("a:first") 

Cela vous donnera le premier enfant "un" tag, mais pas les descendants. Par exemple.

 <div id="log"> 
     <p><a href="foo">Foo</a></p> 
     <a href="hello">Hello</a> 
     <a href="how">Hello</a> 
    </div> 

vous donnera: <a href="hello">Hello</a>

Questions connexes