2012-07-24 196 views
0

我正在使用此處的這個jQuery手風琴菜單jQuery Vertical Accordion Menu Plugin。該插件運行良好,沒有太多的定製。我非常期待這個插件提供的功能是頁面刷新後的永久性菜單狀態。這個插件使用cookies來實現這一點。關於這個問題...單擊手風琴菜單之外的鏈接時摺疊jQuery手風琴

如果您在手風琴菜單外單擊,狀態仍然保持不變。我試圖找出一種方法來摺疊整個菜單,當在手風琴菜單之外點擊鏈接時。

我的第一個傾向是找到某種方式來刪除或重置數據狀態保存cookie時的window.location的是等於某個URL。 (目前,如果返回主頁時菜單完全摺疊,我很高興)。

我想最好的解決辦法是一些jQuery的,如果一個被點擊的#手風琴導航被點擊,它會重置的cookie或摺疊菜單之外。

我對任何事情都很開放。

我嘗試了以下,沒有運氣。

jQuery(document).ready(function(jQuery){ 
    var siteurl = "http://myhomepageurl.com/index.php"; 
if (window.location.href == siteurl) { 
    jQuery.cookie('dcjq-accordion-1', null, { path: '/'}); 
    } 
}); 

任何建議在一個更優雅的解決方案將不勝感激!感謝您花時間提前看看!

回答

0

有一個技巧可以做到這一點,只需綁定你的html和body元素的事件處理程序。 如果手風琴被點擊,您會停止傳播,否則會摺疊手風琴。

$(function() { 
    $('html').on('click', collapseAccordion); 
    $('body') 
    .on('click','.accordion', function (e) { e.stopPropagation() }); 
}); 

你應該做一個函數collapseAccordion,其經API調用倒塌手風琴。

+0

對不起,如果我沒有正確地跟蹤代碼,但是不會在'.accordion'類中點擊任何點擊摺疊手風琴嗎?如果是這樣,我正在尋找與此相反的... – TravelingAdMan 2012-07-24 09:08:39

+0

如果_is_它做了什麼我可以將此類更改爲'.on-click-collapse-accordion'之類的東西,然後我有這個類的任何鏈接都會導致「collapseAccordion」函數被調用? – TravelingAdMan 2012-07-24 09:12:05

+0

我通過在'html'元素的clickhandler中再次選擇'.accordion'元素而犯了一個錯誤 – 2012-07-24 10:05:07

0
$(function() { 
    $('body').mousedown(function (e) { 
    if($(e.target).closest('.accordion').length != 1){ 
     //click was outside accordion, 
     // so close it 
    }  
});