这个jQuery slideToggle函数有什么问题?

时间:2009-06-19 17:24:18

标签: jquery

我有一个票务管理程序,我正在尝试使用jQuery添加'accordian'样式功能。这个程序是用PHP编写的。输出HTML如下所示:

<div class="eachticketwrapper">
     <div class="simpleticketview">
           <ul class="displayinline ticketsummarybar">
                    <li class="col0"><a href="#" class="toggleLink">E</a></li>
                       //...
           </ul>
      </div> <!-- simpleticketview -->
<br class="clear" />
<div class="toggle"> <!-- hiddenticketview -->
     //...
</div>

这会在页面上重复几十次。

我的jQuery代码如下所示:

$(document).ready(function() {
   $('div.toggle').hide();
   $('.toggleLink').click(function() {
        $(this).next('div.toggle').slideToggle('fast');
   return false;
   });
});

当我点击E时,它不会滑动下一个div。事实上没有任何反应。

我试过用: $( 'div.toggle')的slideToggle( '慢');

这导致所有div切换。但是我需要它来定位NEXT div。

提前致谢。

2 个答案:

答案 0 :(得分:1)

你需要给你的'toggle' div一个唯一的ID,并与你的链接ID匹配。然后针对这些ID:

<div class="eachticketwrapper">     
    <div class="simpleticketview">           
        <ul class="displayinline ticketsummarybar">
                <li class="col0"><a href="#" id="link-1234" class="toggleLink">E</a></li>
                   //...           </ul>
  </div> <!-- simpleticketview -->
  <br class="clear" />
  <div id="ticket-1234" class="toggle"> <!-- hiddenticketview -->     
   //...
  </div>

jQuery的:

$(document).ready(function() { 
    $('div.toggle').hide(); 
    $('.toggleLink').click(function() { 
        var id = $(this).attr("id").split("-");
        $("#ticket-" + id[1]).slideToggle('fast'); return false; 
    }); 
});

答案 1 :(得分:0)

你可以获得没有id的div,但它会有点复杂:

$(this).parents().find("div.eachticketwrapper").nextAll().find("div.toggle:first")

这取决于文档的结构。如果每个贴片元素都有多个,则可能需要对其进行调整。最好使用id。