2009-06-19 36 views
2

我有一個票務管理程序,我試圖添加'手風琴'風格的功能,以使用jQuery。這個程序是用PHP編寫的。輸出的HTML如下所示:這個jQuery slideToggle函數有什麼問題?

<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.toggle')。slideToggle('slow');

這導致所有div切換。但我需要它來瞄準NEXT div。

在此先感謝。

回答

1

你需要給你的'切換'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

謝謝你的迴應傑森! 有沒有什麼辦法可以避免提供一個唯一的ID?我認爲jQuery的力量之美來自事實,我可以簡單地說下一個.toggle div?錯誤是真的? – HeavyObjectLifter 2009-06-19 18:54:04

0

你可以在div沒有ID,但它會以某種複雜:

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

這取決於結構你的文件。如果您有多個每個包裝紙元素,則可能需要對其進行調整。最好使用一個id。