tabs.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. js tabs and tabbed content plugin
  3. */
  4. function Tabs(selector) {
  5. function hide($nav) {
  6. console.log("hide", $nav);
  7. $nav.removeClass("js-tab-nav-show");
  8. $($nav.data("tab-target")).removeClass("js-tab-show").hide();
  9. }
  10. function show($nav) {
  11. console.log("show", $nav);
  12. $nav.addClass("js-tab-nav-show");
  13. $($nav.data("tab-target")).addClass("js-tab-show").show();
  14. }
  15. var $e = $(selector);
  16. if ($e.length) {
  17. // pre-assign init index
  18. var $current = $e.find('.js-tab-nav-show');
  19. if ($current.length) {
  20. $($current.data("tab-target")).addClass("js-tab-show");
  21. }
  22. // bind nav click
  23. $e.on("click", ".js-tab-nav", function (e) {
  24. e.preventDefault();
  25. var $this = $(this);
  26. // is showing, not change.
  27. if ($this.hasClass("js-tab-nav-show")) {
  28. return;
  29. }
  30. $current = $e.find(".js-tab-nav-show").eq(0);
  31. hide($current);
  32. show($this);
  33. });
  34. console.log("init tabs @", selector)
  35. }
  36. }
  37. $.fn.extend({
  38. tabs: function () {
  39. Tabs(this);
  40. }
  41. });