Как получить первый внутренний элемент?

20

Итак, я хочу получить первый тег 'a' в этом div. Это действительно сводит меня с ума. спасибо за любую помощь.

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

} 
    
задан JamesTBennett 03.08.2010 в 10:20
источник

3 ответа

32

Не-jQuery: ( ранее не был помечен jQuery, поэтому я включил этот )

  • Если вы хотите получить только первый дочерний элемент:

    var element = document.getElementById('PGD').children[0];
    
  • Если вы хотите получить первый элемент привязки:

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

С jQuery:

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

и на самом деле ваша функция может быть

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

Обновление:

Поскольку вы используете jQuery, я предлагаю не прикреплять обработчик кликов в вашей разметке HTML. Сделайте это способом jQuery:

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

и ваш HTML:

<div id="PGD" class="album">
     <a class="dl" href="#">DOWNLOAD</a>
</div>

Смотрите сами: Ссылка

    
ответ дан Felix Kling 03.08.2010 в 10:29
источник
  • да, я пробовал это. нет любви. То, что я пытаюсь сделать с этим, - установить атрибут отображения ссылки от ни одного к встроенному. Таким образом, я делал то, что у вас есть с .attr (). –  JamesTBennett 03.08.2010 в 10:37
  • function load (dl) {var element = $ (dl) .find ('a: first'). attr ('display', 'inline'); } –  JamesTBennett 03.08.2010 в 10:37
  • @creocare: см. мой обновленный ответ. Предыдущий должен также работать, но, возможно, вы не определяете нагрузку в глобальной области. Всегда смотрите на консоль своего браузера, чтобы проверить наличие ошибок. –  Felix Kling 03.08.2010 в 10:50
  • Если у вас есть якорный тег с «display: none», просто используйте функцию show () для элемента в jQuery. Не нужно возиться с атрибутом стиля отображения, если это необходимо. –  Java Drinker 03.08.2010 в 15:18
  • Спасибо за помощь. Я никогда не видел jsfiddle.net до того, чтобы это было круто. –  JamesTBennett 04.08.2010 в 01:11
0
$("#PGD").children("a:first")

Это даст вам первый дочерний тег «a», но не потомки. Например.

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

Вы получите: <a href="hello">Hello</a>

    
ответ дан naikus 03.08.2010 в 10:24
источник
0
$(ID).find(':first')

См. команду find jQuery.

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

Фактически я не понимаю проблему, поэтому я пытаюсь исправить вашу функцию, чтобы она понятна для вас:

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

} 

Я полагаю dl , что $('#PGD') . Но дочерний элемент A не имеет атрибута id , что вы пытаетесь найти?

Также см .: Ссылка

    
ответ дан ajile 03.08.2010 в 10:23
источник
  • Да, я пробовал это, но он все еще не работает. Я не хочу делать второй, потому что он недостаточно динамичен. –  JamesTBennett 03.08.2010 в 10:31
  • Вы можете установить хром, firefox или сафари для вывода своих объектов через консоль. После этого вам будет легче. PS: В Chrome это Ctrl + I –  ajile 03.08.2010 в 10:47