jQuery,next()或prev()或其他我不知道的?

时间:2012-06-21 18:42:21

标签: jquery html

我有这个列表,我希望在点击链接时从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(),但我没有解决我的问题(也许我用错了)

提前致谢。

2 个答案:

答案 0 :(得分: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')

答案 1 :(得分:1)

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

$('a.accordion').click(function() {
    var $li = $(this).parent('li');
});