0

我有这个列表,我想在点击链接时从 jquery 中选择 li 元素

<ul>
    <li><a class="accordion" href="#">1</a></li>    
    <li><a class="accordion" href="#">2</a></li>    
    <li><a class="accordion" href="#">3</a></li>    
    <li><a class="accordion" href="#">4</a></li>    
    <li><a class="accordion" href="#">5</a></li>    
    <li><a class="accordion" href="#">6</a></li>    
</ul>

我写这个jQuery代码

 $('a.accordion').click(function() {
      var href = $(this).attr("href");
      div = $('<div/>', {
         id: 'intotheli',
         style: {width:200}
      });
      //console.log(div);

      // loading content  with ajax custom function  
      div.html( loadcontent(div,$(this).attr("href"))); 
      // on this point i want find the li tag that contain the clicked link
      div.slideDown('slow').appendTo($(this));                  

      return false;
});

我已经尝试使用 $(this) 中的 .next() 和 prev() 但我没有解决我的问题(也许我用错了)

提前致谢。

4

2 回答 2

2

因为看起来你是新手,所以我将如何重写它:

<ul class="accordion">
    <li><a href="#">1</a></li>    
    <li><a href="#">2</a></li>    
    <li><a href="#">3</a></li>    
    <li><a href="#">4</a></li>    
    <li><a href="#">5</a></li>    
    <li><a href="#">6</a></li>    
</ul>

这使得标记更小更整洁。

然后代替:

$('a.accordion').click(function() {

我会使用:

$('.accordion').on("click", "a", function() {

这意味着只绑定了一个事件处理程序,而不是 6 个,这稍微加快了速度,但同样只是保持简单。此更改仅适用于我的新标记。

您的其余代码将按原样工作,$(this)仍然指单击的链接。

要获取 所在的li元素a,请使用$(this).parent('li').

于 2012-06-21T18:52:43.053 回答
1

.next().prev()遍历兄弟姐妹。他们得到下一个/上一个兄弟姐妹。如果你想<li>从中得到<a>,你想要.parent

$('a.accordion').click(function() {
    var $li = $(this).parent('li');
});
于 2012-06-21T18:47:25.443 回答