0

私はここにあるこのjQueryアコーディオンメニューを使用していますjQuery垂直アコーディオンメニュープラグイン。プラグインはあまりカスタマイズしなくてもうまく機能しています。このプラグインが提供する私が本当に探していた機能は、ページの更新後の永続的なメニュー状態です。このプラグインはこれを実現するためにCookieを使用します。問題に...

アコーディオンメニューの外側をクリックしても、状態は維持されます。アコーディオンメニューの外でリンクがクリックされたときにメニュー全体を折りたたむ方法を見つけようとしています。

私の最初の傾向は、window.locationが特定のURLと等しい場合に、状態保存Cookieのデータを削除またはリセットする方法を見つけることでした。(現時点では、ホームページに戻ったときにメニューが完全に折りたたまれていれば幸いです)。

最善の解決策は、#Accordion-Navigationの外でクリックすると、Cookieがリセットされるか、メニューが折りたたまれるjQueryだと思います。

私は何でも開いています。

運が悪かったので以下を試してみました。

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

よりエレガントなソリューションでの提案は大歓迎です!よろしくお願いします!

4

2 に答える 2

0
$(function () {
  $('body').mousedown(function (e) { 
    if($(e.target).closest('.accordion').length != 1){
       //click was outside accordion,
       // so close it
    }      
});
于 2012-07-24T10:11:05.193 に答える
0

これを行うにはトリックがあります。html と body 要素にイベント ハンドラーをバインドするだけです。アコーディオンがクリックされた場合、伝播を停止します。それ以外の場合は、アコーディオンを折りたたみます。

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

collapseAccordionAPI呼び出しを介してアコーディオンを折りたたむ関数を作成する必要があります。

于 2012-07-24T08:43:08.157 に答える