2013-05-27 3 views
1

Здесь я читал много вопросов о получении значения индекса.Индекс элемента списка ul li при нажатии на ссылку внутри

Я знаю, как получить li по индексу индекса кликов. Тем не менее, мне нужно получить значение li, когда нажата ссылка внутри него.

<ul> 
    <li><a class=link href="#"></a></li> 
    <li><a class=link href="#"></a></li> 
    <li><a class=link href="#"></a></li> 
    <li><a class=link href="#"></a></li> 
</ul> 


$("li a.link").click(function(e) { 
    var i = $(this).index(); 
     alert(i) 
}); 

Это не будет работать, потому что он принимает индекс a.link не ul li. Как я могу получить индекс li при нажатии на конкретный a.link?

+5

$ (это) .parent() .индекс(); –

ответ

3

Вы можете использовать селектор JQuery в parent() целевого индекса родительского элемента звена щелкнутого якоря.

В этом случае это будет: $(this).parent().index();.

$("li a.link").click(function(e) { 
    var i = $(this).parent().index(); 
    alert(i); 
}); 

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

$("li a.link").click(function(e) { 
    var i = $(this).parent().index() + 1; 
    alert(i); 
}); 
+0

Спасибо за ваш ответ, оба они не работают, в первом случае он показывает 2 или 3 все время не имеет значения, какой код'li'code 'я нажимаю. –

+1

YEs - извините, я просто написал anwser. Потому что это работает на показанном случае, у меня было другое. В конце концов, ваш anwser был хорошим и помог мне решить мою проблему. СПАСИБО :) –

+0

@ SzymonDziewoński А я так думал :) Не беспокойтесь, человек, рад помочь в любое время! – lifetimes

0

Есть два подхода, которые вы можете предпринять: подсчитайте, какая позиция нажата li, или запишите их заранее. Второе является гораздо более эффективным (постоянное время на клике):

var li_elems = $('li.link'), 
    i = 0, 
    len = li_elems.length; 

for (; i < len; i++) { 
    li_elems[i].attr('index', i); 
} 

$('ul').on('click', 'li.link', function (e) { 
    var index = this.getAttribute('index'); 
    alert(index); 
}); 
+1

Его показы недействительны в этом случае или не работают, как я хотел –

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