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 的工作脚本,即首先

function toggleDiv() {

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

}

我想根据单击的锚标记来切换 div,但不能这样做。如果我使用 id 选择器,那么第一个 div 会被切换,但不会切换其他 div,因为它们会获得相同的 id,即 erong ......

4

2 回答 2

1

Injavascript:toggleDiv($(this)) this指向窗口,而不是对象。见JS 小提琴。所以更改下面的代码:

"<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 元素。

于 2012-10-18T18:39:43.383 回答
0

隐藏所有,只显示你想要的方法:

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

但是省去重新发明轮子和使用jQueryUI的麻烦。

于 2012-10-18T18:35:44.830 回答