我正在使用jQuery并希望定位第n个< li>单击第n个链接后在列表中。
<ul id="targetedArea">
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<div id="clickedItems">
<a></a>
<a></a>
<a></a>
<a></a>
</div>
我可以单独定位它们,但我知道必须通过传递哪个&lt; a&gt;更快的方式。我点击了元素。
$("#clickedItem a:eq(2)").click(function() {
$("#targetedArea:eq(2)").addClass('active');
return false;
});
干杯,
史蒂夫
答案 0 :(得分:4)
这样的事情怎么样:
$('#clickedItems a').click(function() {
// figure out what position this element is in
var n = $('#clickedItems a').index($(this) );
// update the targetedArea
$('#targetedArea li:eq('+n+')').html('updated!');
return false;
});
假设您的<a>
和<li>
元素之间存在1:1的关系,它会更新相应的<li>
答案 1 :(得分:1)
我知道这并不能直接回答你的问题,但也许你会让它变得更难。
为每个A和LI元素提供一个ID,并创建ID,以便您可以相互推断它们。单击A后,您立即知道LI的ID并可以直接引用它。
作为一个副作用,这比任何可能做同样事情的聪明的jQuery更有效。
答案 2 :(得分:0)
我不知道jquery在mootools中是否有这样的东西
$$('a.clickedItems').addEvent('click', function(e){
e.preventDefault();
$('targetedArea').getChildren()[this.getAllPrevious().length].addClass('selected');
});
答案 3 :(得分:0)
$('#clickedItems a').click(function() {
// you probably want to turn off the currently active one
$('#targetedArea li.active').removeClass("active");
// count the links previous to this one and make the corresponding li active
$('#targetedArea li:eq(' + $(this).prevAll('a').length + ')').addClass("active");
// prevent the browser from going to the link
return false;
});