简体   繁体   中英

Foundation 6: How to add tabs using jquery

i'm trying to add a tab in foundation with jquery. See my Demo code:

<!DOCTYPE html>
<html>
  <head>
      <meta charset="UTF-8">
      <title>Tab Test</title>
      <link href="foundation-6/css/foundation.css" type="text/css" rel="stylesheet">
      <script src="jquery-2.2.0.js"></script>
      <script src="foundation-6/js/foundation.js"></script>
  </head>

  <body>
    <div class="row"><div class="large-12 columns"><button type="button" id="button1">Click Me!</button></div></div>
    <div class="row collapse">
      <div class="medium-3 columns">
        <ul class="tabs vertical" id="example-vert-tabs" data-tabs>
          <li class="tabs-title is-active"><a href="#panel1v" aria-selected="true">Tab 1</a></li>
          <li class="tabs-title"><a href="#panel2v">Tab 2</a></li>
          <li class="tabs-title"><a href="#panel3v">Tab 3</a></li>
          <li class="tabs-title"><a href="#panel4v">Tab 4</a></li>
          <li class="tabs-title"><a href="#panel5v">Tab 5</a></li>
          <li class="tabs-title"><a href="#panel6v">Tab 6</a></li>
        </ul>
        </div>
        <div class="medium-9 columns">
        <div class="tabs-content vertical" data-tabs-content="example-vert-tabs" id="tab_content">
          <div class="tabs-panel is-active" id="panel1v">
            <p>Test1</p>
          </div>
          <div class="tabs-panel" id="panel2v">
            <p>Test2</p>
          </div>
          <div class="tabs-panel" id="panel3v">
            <p>Test3</p>
          </div>
          <div class="tabs-panel" id="panel4v">
            <p>Test4</p>
          </div>
          <div class="tabs-panel" id="panel5v">
            <p>Test5</p>
          </div>
          <div class="tabs-panel" id="panel6v">
            <p>Test6</p>
          </div>
        </div>
      </div>
    </div>
    <script>
      $(document).ready(function() {
        $(document).foundation();

        $("#button1").click(function() {
          $("#example-vert-tabs").append('<li class="tabs-title"><a href="#panel7v">Tab 7</a></li>');
          $("#tab_content").append('<div class="tabs-panel" id="panel7v"><p>Test7</p></div>');
          $(".tabs").foundation();
        });
      });
    </script>
  </body>
</html>

But when i click the button, i got the following warning: "Tried to initialize tabs on an element that already has a Foundation plugin." and i am not able to click on the new tab.

When I click i get this error:

7123TypeError: undefined is not an object (evaluating '$tabLink[0].hash')
_handleTabChangefoundation.js:7122
(anonymous function)foundation.js:7059
dispatchjquery-2.2.0.js:4731
handlejquery-2.2.0.js:4543

What is wrong?

The basic problem in your code is how you initialize the tabs instance.

In foundation 6 in order to create a new instance of tabs ( link ) you should add to your js code something like this:

var elem = new Foundation.Tabs($('#example-vert-tabs'));

Then each time you make changes and add or remove tabs you can call something like this:

elem = new Foundation.Tabs($('#example-vert-tabs'));

I've created a codepen example with your code so you can see exactly what's going on ( http://codepen.io/MKallivokas/pen/xVgrYM ):

$(document).ready(function() {
    var elem = new Foundation.Tabs($('#example-vert-tabs'));

    $("#button1").click(function() {
          $("#example-vert-tabs").append(
            '<li class="tabs-title"><a href="#panel7v">Tab 7</a></li>'
          );
          $("#tab_content").append(
            '<div class="tabs-panel" id="panel7v"><p>Test7</p></div>'
          );

          elem = new Foundation.Tabs($('#example-vert-tabs'));
    });
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM