2012-06-21 32 views
0

我有這個名單,我想從jQuery的選擇li元素當鏈路點擊jQuery,next()或prev()或其他我不知道的?

<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; 
}); 

我有。接下來()和prev(試)從$(this)但我不解決我的問題(也許我用他們錯了)

在此先感謝。

+1

請修正題目。問題是一樣的(例如什麼是「問題」?效果如何?調試顯示的是什麼?) – 2012-06-21 18:48:24

+0

實際上我有點含糊,問題是我無法從jquery中的標記中定位li標記代碼,但答案是有啓發性的。 – Goonie

回答

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)仍指被點擊的鏈接。

要獲得a所在的li元素,請使用$(this).parent('li')

+1

感謝關於代碼風格^ _ ^的「技巧」 – Goonie

1

.next() and .prev()遍歷兄弟姐妹。他們得到下一個/前一個兄弟姐妹。如果你想從<a>得到<li>,你需要.parent

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

感謝您的回答! – Goonie