2012-10-18 84 views
0
var header = $("#accordion"); 

      $.each(data, function() { 
       header.append("<a id='Headanchor' href='javascript:toggleDiv($(this));'>" + this.LongName + "</a>" + "<br />", 
       "<div id='myContent' style='display:none'>" + 
       "<ul>" + 
       "<li>" + "ID: " + this.Id + "</li>" + 
       "<li>" + "Short Name: " + this.ShortName + "</li>" + "</ul>" + "</div>" 
       ); 


       function toggleDiv(element) { 
     var x = element.next(); 
     x.toggle(); 

     <div id="accordion"> 

</div> 

的工作腳本只是一個DIV即第一切換DIV取決於哪個選擇

function toggleDiv() { 

       $("#myContent").toggle(); 

} 

我想切換,這取決於被點擊的錨標記,但沒有能夠做到這一點div的。如果我使用id選擇器,那麼第一個div會切換,但不會休息,因爲它們會得到相同的id,這是erong。can somone please help me out with this ....

+0

嘗試在恢復HTML之前關閉腳本標記。 –

回答

1

javascript:toggleDiv($(this))this指向窗口,而不是指向對象。請參閱JS fiddle。所以更改代碼如下:

"<a id='Headanchor' href='javascript:toggleDiv($(this));'>" 

到:

"<a id='Headanchor' href='#' onclick='return toggleDiv($(this));'>" 

和JS代碼:

function toggleDiv(element) { 
     var x = element.next(); 
     x.toggle(); 
     return false; 
} 

此外,ID應該是唯一的,在你的代碼,你將有多個Headanchor元素。

+0

是的,這工作非常感謝..我刪除了ID的..我只是嘗試不同的奇怪的:)反正謝謝很多 – Scorpio

0

隱藏所有,只顯示一個你想要的方式:

$('#accordian>div').hide()  // hide all divs within the accordian 
    .find('#selectedId').show(); // then show the one that matches the ID you want 

但保存自己重新發明輪子的麻煩和使用jQueryUI