2012-01-16 49 views
2

對於今天的問題,我有一個非常小的手風琴,我用jQuery Tools library構建。我發現jQuery工具爲我提供了我需要的功能,比800kb jQuery UI的佔用空間小得多。更不用說更流暢和更好質量的動畫了。jQuery powered Accordion缺少Anchor Link功能

但是,現在我們開始填充該網站,並且我對手風琴中的鏈接無法正常工作感到有點困惑。我用一個簡單的href =「#」我的佔位符,廣告突然那些不帶我回到頁面頂部

的HTML:

<div class="col"> 
      <ul id="accordion" class="footerNav"> 
       <li class="topLevel"> 
        <a class="current" href="#">Autos</a> 
        <ul id="autos" class="pane"> 
         <li><a href="#">News</a></li> 
         <li><a href="#">Reviews</a></li> 
         <li><a href="#">Car Tech</a></li> 
         <li><a href="#">Fuel Economy &amp; Safety</a></li> 
         <li><a href="#">Buying &amp; Selling</a></li> 
         <li><a href="#">Everything Else</a></li> 
        </ul> 
       </li> 
       <li class="topLevel"> 
        <a href="#">Lifestyle</a> 
        <ul id="lifestyle" class="pane"> 
         <li><a href="#">Music</a></li> 
         <li><a href="#">Food</a></li> 
         <li><a href="#">Travel</a></li> 
         <li><a href="#">Shopping</a></li> 
         <li><a href="#">Everything Else</a></li> 
        </ul> 
       </li> 
       <li class="topLevel"> 
        <a href="#">People</a> 
        <ul id="people" class="pane"> 
         <li><a href="#">Who You Know</a></li> 
         <li><a href="#">Who You Should Know</a></li> 
         <li><a href="#">Everyhone Else</a></li> 
        </ul> 
       </li> 
       <li class="topLevel"> 
        <a href="#">Tech</a> 
        <ul id="tech" class="pane"> 
         <li><a href="#">Business</a></li> 
         <li><a href="#">Pleasure</a></li> 
         <li><a href="#">Everyhting Else</a></li> 
        </ul> 
       </li> 
       <li class="topLevel"> 
        <a href="#">Trends</a> 
        <ul id="trends" class="pane"> 
         <li><a href="#">Online</a></li> 
         <li><a href="#">Offline</a></li> 
         <li><a href="#">Everyhting Else</a></li> 
        </ul> 
       </li> 
       <li><a href="#">Blog</a></li> 
      </ul> 
     </div> 

的CSS:

footer .col ul.footerNav li { 
    color:#fff; 
    font-family: Arial, Helvetica, sans-serif; 
    font-weight:100; 
    text-decoration:none; 
    list-style: url(../../images/footer_bullet_1.png); 
} 
footer .col ul.footerNav li.topLevel { 
    list-style: url(../../images/footer_bullet_3.png); 
} 
footer .col ul.footerNav li.topLevel:hover { 
    cursor:pointer; 
    list-style: url(../../images/footer_bullet_2.png); 
} 
footer .col ul.footerNav li.topLevel:active { 
    list-style: url(../../images/footer_bullet_2.png); 
} 

footer .col ul.footerNav li a { 
    display:block; 
    color:#ddd; 
    font-family: Arial, Helvetica, sans-serif; 
    font-weight:100; 
    text-decoration:none; 
    outline:none; 
} 
footer .col ul.footerNav li a:hover { 
    text-decoration:underline; 
} 

的JavaScript:

$(document).ready(function() { 

      // Footer Accordion 
      $("#accordion").tabs("#accordion ul.pane", { 
       tabs: 'span', 
       effect: 'slide', 
       initialIndex: 0 
      }); 

     }); 

要查看該網站的演示,你可以到這裏:

http://rawdesigns.net/web2carz/

手風琴存在於頁腳的中央欄。

+0

我想我應該指定這些鏈接將會出站頁面。 '頂部'功能只是測試鏈接實際工作的一些東西。 在使用之前,我從未必須指定任何種類的#toTop ID。 當我們進入生產階段時,此頁面上的鏈接將與出站頁面相關聯。 – robabby 2012-01-16 17:12:45

回答

1

您使用此錯誤的工具,

你正在使用的樹狀視圖任務的標籤工具,你的HTML結構與爲了工作而需要圖書館的人完全不同。

因爲現在您正在將所有</a>標籤視爲「標籤」,因此他們不會去任何地方,他們只會試圖找到與其相關的最接近的內容,即顯然不存在的</div>

你只需要這個代碼,以使該樹視圖

/* CSS */.pane {顯示:無}

$(function() { 
    $('li.topLevel a:first-child').click(function(e) { 
     e.preventDefault(); 
     $('.pane:visible').slideUp('slow'); 
     $(this).next('.pane:not(:visible)').slideDown('slow'); 
    }); 
}); 
+0

這個技巧爲我提供了鏈接功能,但是,現在所有點擊鏈接都會將我帶到頁面的頂部。當我點擊汽車窗格時,當內容滑出時,它將我帶到頁面的頂部。我已將這些更改上傳到我的服務器,因此您可以按照我的帖子中的鏈接查看我正在討論的內容。 – robabby 2012-01-16 17:23:31

+0

我在這裏所做的是在topLevel定位點中爲我的定位點添加一個#footer的ID,所以現在當展開「Accordion」時頁面不會點擊頂部。 現在,由於我仍在使用我的jQuery印章,我將如何啓動此手風琴以擴展第一個窗格? – robabby 2012-01-16 17:32:59

+0

我想通了。這對我有效:$('li.topLevel #autos')。show(); – robabby 2012-01-16 19:27:04

0

我認爲它來自插件本身。縱觀source code,現在看來,這可能使交叉表連接起來,這樣做是這樣的:

// cross tab anchor link 
panes.find("a[href^=#]").bind("click.T", function(e) { 
    self.click($(this).attr("href"), e);   
}); 

它發現所有<a>在所有面板與href開始用#,它綁定click事件處理程序調用內部「單擊」方法self.click,用於切換選項卡。

您的鏈接屬於這種情況,因此被認爲是交叉錶鏈接。

不認爲將您的鏈接更改爲<a href="#top">將解決問題,因爲它們仍將被視爲交叉錶鏈接。它將不會如此工作,或者只是你想要的。