2011-11-10 21 views
2

ここで質問された質問とほぼ同じ問題が発生していますが(Link to open jQuery Accordion?)、回答を正しく実装できませんでした。Jqueryアンカータグ/ URLハッシュで特定のパネルをアクティブにするアコーディオン

私は、このソリューションを試してみましたが、それは私のために動作しませんでした:

<script type="text/javascript"> 
     $(function(){ 

      // Accordion 
      $("#accordion").accordion({ 
       header: "h3", 
       autoHeight: false, 
       navigation: true, 
       collapsible: true, 
       active: false 
      }); 
      $(".exlnk").click(function(event){ 
     window.location.hash=this.hash; 
});  

     }); 


</script> 
<script type="text/javascript"> 
function Click1(){ 
$("#accordion").accordion('activate' , 0) 
} 
function Click2(){ 
$("#accordion").accordion('activate' , 1) 
} 

</script> 

簡体HTML::

<h3><a class="exlnk" href="#about" title="About">About</a></h3> 
<div>content blah blah</div> 
<h3><a class="exlnk" href="#about" title="About">About</a></h3> 
<div>Blah blah</div> 

$("#accordion").accordion("activate", <?php echo $_GET['id']; ?>); 

は、私は次のコードでjQueryのアコーディオンを持っています

上記のコードは、指定されたパネルをアクティブにするリンクをメインページに持つことができます。

exlnkビットは、このチュートリアル(http://www.michaeljacobdavis.com/tutorials/statesavingaccordion.html)で読んだところで、各パネルにそれをクリックするとハッシュを与え、状態を保存してブックマーク可能なパネルを作成します。ハッシュを割り当てますが、パネルをアクティブにしたり、再ロード時に閉じることはありません。

私が望むのは、外部からhttp://www.mysite.com/page#anchorにリンクし、適切なパネルを開いてページを開くことができるようにすることです。アコーデオンのページからリンクできるように私の回避策は非常に便利です!

ご協力ありがとうございました...私はすべてのQ & Aをこのサイトでアコーディオンのスクリプトに関連して読んでおり、答えを出すことができませんでした。私はJquery/Javascriptを非常に新しくしているので、実装のすべてのステップと、それぞれの推奨されるコードを配置する場所を説明する答えがすばらしくなるでしょう。

+0

'$("#accordion ")によって生成されたJSフラグメントを見ると便利でしょう。>); ' –

+0

それは私が紛失しているかもしれません - そのスニペットを使用しようとしたとき、それはちょうど私のアコーデオンコードに座っていて、他の方法では参照または呼び出されませんでした。 – essentialred

+0

こんにちは、ちょうどここであなたのための素早くアコーディオンをやった: [link](http://weblopper.com.au/accordian/index.html) 私はそれがあなたの必要に応じていると思います。 – sally

答えて

1

あなたが動的にインデックスまたはセレクタとして渡されたものに基づいてパネルを表示させてください.activate()メソッドを使用して、サーバー側のコードで結ぶことになるでしょう:

はのコンテンツ部分をアクティブ化プログラムでアコーディオンをインデックス には、ヘッダーの位置を に一致させるためのゼロインデックス番号または要素に一致するセレクタを指定できます。 falseを渡してすべてを閉じます(collapsible:trueで可能なのは のみ)。

例:

可能な場合は、代わりに$_GET['id']を渡すので、あなたが起動したい要素に一致するセレクタの名前を渡します。たとえば:

$("#accordion").accordion("activate", "#<?php echo $_GET['tab']; ?>"); 

$_GET['tab']は、セレクタあなたの合格の名前になります。もちろんセレクタをクラスにする必要がある場合は、ハッシュをピリオドに変更してください。

http://www.mysite.com/page#anchorのようなリンクに基づいて何かを有効にしたい場合は、ページが読み込まれてそのハッシュを使用するときにjavascriptでハッシュを取りたいと思うでしょう(これはパネルをアクティブにするセレクタの名前になります) $_GET['id']

+0

お返事ありがとうございました!私が探しているもののように聞こえるが、それを実行する方法がわからない - コードの変更がどのようなものになるかの例があるのだろうか? – essentialred

+0

ようこそ。私は例を提供するために私の答えを編集しました:) – Aaron

+0

Hm ...コード$( "#accordion")の場合。accordion( "activate"、 "#");それが機能するためにはパネルのIDである必要はありませんか?たとえば、最初のパネルをアクティブにするには、コードは$( "#accordion")です。accordion( "activate"、 "0"); – essentialred

関連する問題