2010-08-03 15 views
19

así que quiero conseguir la 'a' etiqueta por primera vez en este div. Esto realmente me está volviendo loco. Gracias por cualquier ayuda.Cómo obtener el primer elemento interior?

<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'); 

} 

Respuesta

31

no jQuery: (no fue etiquetado con jQuery antes, así que incluía esta)

  • Si desea obtener el sólo el primer elemento secundario:

    var element = document.getElementById('PGD').children[0]; 
    
  • Si desea obtener el primer elemento de anclaje:

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

con jQuery:

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

y en realidad su función solo puede ser

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

Actualización:

Como está utilizando jQuery, le sugiero que no adjunte el controlador de clics en su marcado HTML. Hacerlo de la manera jQuery:

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

y su HTML:

Vea usted mismo: http://jsfiddle.net/GWgjB/

+0

sí, lo he intentado. sin amor. Lo que trato de hacer con esto es establecer el atributo de visualización del enlace de ninguno a en línea. Así que estaba haciendo lo que tienes con .attr() adjunto. – JamesTBennett

+0

carga de función (dl) { elemento var = $ (dl) .find ('a: first'). Attr ('display', 'inline'); } – JamesTBennett

+0

@creocare: Por favor, mira mi respuesta actualizada. El anterior también debería funcionar, pero tal vez no defina 'load' en el alcance global. Siempre eche un vistazo a la consola de su navegador para verificar si hay errores. –

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

Ver find de comandos de jQuery.

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

podía comprender que no he entender un problema, así que estoy tratando correcta su función, para que quede claro para usted:

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'); 

} 

I supose dl que es $('#PGD'). Pero elemento hijo A no han atribuir id, ¿qué estás tratando de encontrar?

Ver también: http://api.jquery.com/category/selectors/

+0

Sí lo he intentado pero todavía no funciona. No voy a hacer el segundo porque no es lo suficientemente dinámico. – JamesTBennett

+0

Puede instalar Chrome, Firefox o un safari para generar sus objetos a través de la consola. Después de eso, será más claro para ti. PD: En Chrome es Ctrl + I – ajile

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

esto le dará el primer hijo "una" etiqueta, pero no los descendientes. P.ej.

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

le dará: <a href="hello">Hello</a>

Cuestiones relacionadas