2010-01-26 3 views
1

Предположим, у меня есть это:Получение «HREF» значение якорем внутри другого элемента

<ul id="menu"> 
<li><a href="someplace">some text</a><li> 
... 
</ul> 

Я хочу, чтобы каждый li в ссылку, поэтому мне нужно, чтобы извлечь значение href так:

$('#menu li').click(function() { 
    var link_to = $(SELECTOR THAT I NEED).attr('href'); 
    window.location = link_to; 
}); 

Каков правильный код для этого? Есть ли способ лучше?

+0

Почему нужно привязать клик к ли? .. почему бы не сделать якорь делать то, что он делает? измените css якоря на высоту: 100% и ширину: 100% – Reigel

+0

Потому что я не думал об этом :) Смотрите мой комментарий к ответу ниже –

ответ

2

Поскольку у вас есть ссылка, почему бы не использовать это?

вы можете установить его в display:block с css, если вы хотите, чтобы занять всю ширину li ..

#menu li a{display:block;} 

и избегать использования JQuery для встроенных функций .. (если я правильно понимаю ..)

+0

Хороший вопрос, не думал о 'display: block'. Это не идеально, потому что заполнение элементов 'li' находится за пределами блока' a' и поэтому «мертво». –

+0

Да, вы правы .. но это стоило выстрела, не зная точно, что вы после :). Анамневы выше должны это делать тогда. –

+0

Я проголосую за это и удалю свое собственное сообщение. явно избыточно иметь много привязок кликов, когда привязка семантически обрабатывает onclicks. я бы сказал, что это определенно стоит усилия css, чтобы удалить дополнение, которое создает ли. –

3
$('#menu li').click(function() { 
    var link_to = $(this).children("a").eq(0).attr('href'); 
    window.location = link_to; 
}); 
+0

Я лично предпочел бы '$ (this) .children (" a: first "). attr (" href ")' –

+0

'$ ('a: first', this)' было бы аккуратным способом избежать необходимости запускать щелчок 'li' через' '' функцию. предоставление контекста таким образом точно такое же, как 'find'. я уже отдал свой голос за альтернативу «не делай-что-делай», но я думаю, что этот пост и его комментарии являются действительной документацией для тех, кто спотыкается на этот вопрос, с собственным * вопросом *, где ответ Габи не применим =) –

Смежные вопросы