jQuery дочерний элемент щелкающего элемента

У меня есть список ссылок, к которым прикреплено событие click, мне нужно получить идентификатор от дочерней ссылки A. Так что в приведенном ниже примере, если я нажму на первый элемент списка, мне нужно будет перенастроить Google.

Я пытался, '$this a'но не могу понять синтаксис.

$("ul li").click(function(event){
  $("input").val($(this).html());             
});
<ul>
    <li><a href="http://www.google.com" id="google">Google</a>
</ul>
11.12.2008 13:48:43
3 ОТВЕТА
РЕШЕНИЕ

Я не вижу образец HTML, но

$(this).find('a:first').attr('id')

будет делать это (исправить : первый селектор, если это не то, что вы имели в виду)

это относится к элементу, который вызвал ваше событие

49
11.12.2008 14:53:40
я могу предложить: jQuery (this) .find ('a: first'). attr ('id')? Я просто столкнулся с конфликтом в проекте с прототипом.
Dimitrios Mistriotis 10.09.2010 13:58:35

Вы можете использовать childrenметод:

$(this).children('a').eq(0).attr('id');

Я не уверен насчет синтаксиса, но что-то вроде этого должно работать.

2
10.01.2012 02:10:19
использование индексатора массива возвращает объект dom, поэтому метод .attr не существует и возникает ошибка. Вам нужны $ (this) .children ('a') [0] .id или $ (this) .children ('a'). Get (0) .id или $ (this) .children ('a'). Attr ( 'ID');
redsquare 11.12.2008 17:58:22
Вы уверены, что он возвращает объект DOM? В любом случае, я сказал, что не уверен, когда-нибудь проверю и исправлю, если что-то не так.
mbillard 12.12.2008 14:36:49
Я исправил это с помощью .eq(int)которого возвращает элемент jQuery по указанному индексу.
mbillard 10.01.2012 02:11:08

Чтобы сделать ваш код немного более аккуратным, давайте связать триггеры с такими функциями: (я предлагаю вам дать вашему UL идентификатор, чтобы он относился только к элементам в этом UL)

$('ul li').bind('click', getAnchorId);

Вызываемая функция (getAnchorId) получает атрибут ID дочернего элемента (a) элемента, по которому щелкнули (ul li), и применяет его к переменной (anchorId), и, чтобы показать, что он получает правильную информацию, я помещаю результат в оповещение

function getAnchorId() {
    var anchorId = $(this).children('a').attr('id');
    alert(anchorId);
}

Теперь вы можете делать все, что пожелаете, с этой переменной :)

надеюсь это поможет :)

4
11.12.2008 14:22:18
Это очень субъективно, я лично предпочитаю использовать анонимную функцию, тем более что это настолько специфично.
Pim Jager 11.12.2008 16:52:14
согласился, и использование связывания - просто дополнительное усилие нажатия клавиши вместо использования .click.
redsquare 11.12.2008 17:56:12