2016-08-29 5 views
1

jQueryUI 1.10 "activate"メソッドが削除され、アコーディオンセクションへのリンクを開く際に問題が発生しました。Jqueryアコーディオン - アンカーを使用して特定のセクションに移動

だから私はhereという私の問題の解決策を探しました。

まだ残っている問題があります。

私はリンクを特定のタブを開くようにしますが、もそれにスクロールしてにスクロールします。 あなたが見ることができるように、段落にidをいくつか追加しようとしましたhttp://jsfiddle.net/VZ3T5/232/

助けてください。

HTML:

<a class="opener" data-panel="0" href="#question1">Open & go to Question 1</a> 

<a class="opener" data-panel="1" href="#question2">Open & go to Question 2</a> 

<a class="opener" data-panel="2" href="#question3">Open & go to Question 3</a> 

<a class="opener" data-panel="3" href="#question4">Open & go to Question 4</a> 
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> 
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> 
<div id="accordion"> 

<h3>Question 1</h3> 

    <div> 
     <p>Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer 
      ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit 
      amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo 
      ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.</p> 
    </div> 

<h3>Question 2</h3> 

    <div> 
     <p id="question2">Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet 
      purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor 
      velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit 
      faucibus urna.</p> 
    </div> 

<h3>Question 3</h3> 

    <div> 
     <p id="question3">Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. 
      Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero 
      ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia 
      ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.</p> 
     <ul> 
      <li>List item one</li> 
      <li>List item two</li> 
      <li>List item three</li> 
     </ul> 
    </div> 

<h3>Question 4</h3> 

    <div> 
     <p id="question4">Cras dictum. Pellentesque habitant morbi tristique senectus et netus et 
      malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus 
      orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel 
      est.</p> 
     <p>Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. 
      Class aptent taciti sociosqu ad litora torquent per conubia nostra, per 
      inceptos himenaeos.</p> 
    </div> 
    </div> 

のjQuery:

var $accordion = $("#accordion"); 

$accordion.accordion({ 
     collapsible: true, active: false 
    }); 

$(".opener").on("click", function() { 
    var $this = $(this), 
     toOpen = $this.data("panel"); 

    $accordion.accordion("option", "active", toOpen); 

    return false; 
}); 

答えて

1

はこれを試してみてください:アコーディオンが開かれるまで

var $accordion = $("#accordion"); 

$accordion.accordion({ 
    collapsible: true, 
    active: false 
}); 

$(".opener").on("click", function() { 
    var $this = $(this), 
     toOpen = $this.data("panel"); 
    $accordion.accordion("option", "active", toOpen); 
    var timer = $accordion.accordion("option", "animate");//get animate value 
    setTimeout(function() { 
     $("html,body").animate({ 
      scrollTop: $($("#accordion>div").get(toOpen)).offset().top 
     }, 300); 
    }, timer); //Use it in the timer. 
    return false; 
}); 

簡単な方法は、タイマーを置くことになります。アコーディオンは、アニメーションの値を指定するオプションを持っており、それはまた、タイマーとして使用することができます

デモ:http://jsfiddle.net/GCu2D/1493/

+0

はい!それはそれだった。私はタイマーについて考えなかった。あなたの速い応答のためにたくさんありがとう;-) – Mark

関連する問題