2015-11-04 64 views
1

我创建2个标签:标签1个&标签2.我用视觉作曲家创建标签停止旧标签及新刷新标签时点击

/* ========================================================= 
* vc-tabs.js v1.0.0 
* ========================================================= 
* Copyright 2013 Wpbakery 
* 
* Visual composer Tabs 
* ========================================================= */ 
+ function ($) { 
    'use strict'; 

    var Tabs, old, clickHandler, changeHandler; 

    /** 
    * Tabs object definition 
    * @param element 
    * @constructor 
    */ 
    Tabs = function (element, options) { 
     this.$element = $(element); 
     this.activeClass = 'vc_active'; 
     this.tabSelector = '[data-vc-tab]'; 

     // cached vars 
     this.useCacheFlag = undefined; 
     this.$target = undefined; 
     this.selector = undefined; 
     this.$targetTab = undefined; 
     this.$relatedAccordion = undefined; 
     this.$container = undefined; 
    }; 

    /** 
    * Is cache used 
    * @returns {boolean} 
    */ 
    Tabs.prototype.isCacheUsed = function() { 
     var useCache, that; 
     that = this; 
     useCache = function() { 
      return false !== that.$element.data('vcUseCache'); 
     }; 

     if (undefined === this.useCacheFlag) { 
      this.useCacheFlag = useCache(); 
     } 

     return this.useCacheFlag; 
    }; 

    /** 
    * Get container 
    * @returns {*|Number} 
    */ 
    Tabs.prototype.getContainer = function() { 
     if (! this.isCacheUsed()) { 
      return this.findContainer(); 
     } 

     if (undefined === this.$container) { 
      this.$container = this.findContainer(); 
     } 

     return this.$container; 
    }; 

    /** 
    * Find container 
    * @returns {window.jQuery} 
    */ 
    Tabs.prototype.findContainer = function() { 
     var $container; 
     $container = this.$element.closest(this.$element.data('vcContainer')); 
     if (! $container.length) { 
      $container = $('body'); 
     } 
     return $container; 
    }; 

    /** 
    * Get container accordions 
    * @returns {*} 
    */ 
    Tabs.prototype.getContainerAccordion = function() { 
     return this.getContainer().find('[data-vc-accordion]'); 
    }; 

    /** 
    * Get selector 
    * @returns {*} 
    */ 
    Tabs.prototype.getSelector = function() { 
     var findSelector, $this; 

     $this = this.$element; 
     findSelector = function() { 
      var selector; 

      selector = $this.data('vcTarget'); 
      if (! selector) { 
       selector = $this.attr('href'); 
      } 

      return selector; 
     }; 

     if (! this.isCacheUsed()) { 
      return findSelector(); 
     } 

     if (undefined === this.selector) { 
      this.selector = findSelector(); 
     } 

     return this.selector; 
    }; 

    /** 
    * Get target 
    * @returns {*} 
    */ 
    Tabs.prototype.getTarget = function() { 
     var selector; 
     selector = this.getSelector(); 

     if (! this.isCacheUsed()) { 
      return this.getContainer().find(selector); 
     } 

     if (undefined === this.$target) { 
      this.$target = this.getContainer().find(selector); 
     } 

     return this.$target; 
    }; 

    /** 
    * Get related accordion 
    * @returns {*} 
    */ 
    Tabs.prototype.getRelatedAccordion = function() { 
     var tab, filterElements; 

     tab = this; 

     filterElements = function() { 
      var $elements; 

      $elements = tab.getContainerAccordion().filter(function() { 
       var $that, accordion; 
       $that = $(this); 

       accordion = $that.data('vc.accordion'); 

       if (undefined === accordion) { 
        $that.vcAccordion(); 
        accordion = $that.data('vc.accordion'); 
       } 

       return tab.getSelector() === accordion.getSelector(); 
      }); 

      if ($elements.length) { 
       return $elements; 
      } 

      return undefined; 
     }; 
     if (! this.isCacheUsed()) { 
      return filterElements(); 
     } 

     if (undefined === this.$relatedAccordion) { 
      this.$relatedAccordion = filterElements(); 
     } 

     return this.$relatedAccordion; 
    }; 

    /** 
    * Trigger event 
    * @param event 
    */ 
    Tabs.prototype.triggerEvent = function (event) { 
     var $event; 
     if ('string' === typeof event) { 
      $event = $.Event(event); 
      this.$element.trigger($event); 
     } 
    }; 

    /** 
    * Get target tab 
    * @returns {*|Number} 
    */ 
    Tabs.prototype.getTargetTab = function() { 
     var $this; 
     $this = this.$element; 

     if (! this.isCacheUsed()) { 
      return $this.closest(this.tabSelector); 
     } 

     if (undefined === this.$targetTab) { 
      this.$targetTab = $this.closest(this.tabSelector); 
     } 

     return this.$targetTab; 
    }; 

    /** 
    * Tab Clicked 
    */ 
    Tabs.prototype.tabClick = function() { 

     this.getRelatedAccordion().trigger('click'); 
    }; 

    /** 
    * Tab Show 
    */ 
    Tabs.prototype.show = function() { 
     // if showed no need to do anything 
     if (this.getTargetTab().hasClass(this.activeClass)) { 
      return; 
     } 

     this.triggerEvent('show.vc.tab'); 

     this.getTargetTab().addClass(this.activeClass); 
    }; 

    /** 
    * Tab Hide 
    */ 
    Tabs.prototype.hide = function() { 
     // if showed no need to do anything 
     if (! this.getTargetTab().hasClass(this.activeClass)) { 
      return; 
     } 

     this.triggerEvent('hide.vc.tab'); 

     this.getTargetTab().removeClass(this.activeClass); 
    }; 

    //Tabs.prototype 

    // Tabs plugin definition 
    // ========================== 
    function Plugin(action, options) { 
     var args; 

     args = Array.prototype.slice.call(arguments, 1); 
     return this.each(function() { 
      var $this, data; 

      $this = $(this); 
      data = $this.data('vc.tabs'); 
      if (! data) { 
       data = new Tabs($this, $.extend(true, {}, options)); 
       $this.data('vc.tabs', data); 
      } 
      if ('string' === typeof action) { 
       data[ action ].apply(data, args); 
      } 
     }); 
    } 

    old = $.fn.vcTabs; 

    $.fn.vcTabs = Plugin; 
    $.fn.vcTabs.Constructor = Tabs; 

    // Tabs no conflict 
    // ========================== 
    $.fn.vcTabs.noConflict = function() { 
     $.fn.vcTabs = old; 
     return this; 
    }; 

    // Tabs data-api 
    // ================= 

    clickHandler = function (e) { 
     var $this; 
     $this = $(this); 
     e.preventDefault(); 
     Plugin.call($this, 'tabClick'); 
    }; 

    changeHandler = function (e) { 
     var caller; 
     caller = $(e.target).data('vc.accordion'); 

     if (undefined === caller.getRelatedTab) { 
      /** 
      * Get related tab from accordion 
      * @returns {*} 
      */ 
      caller.getRelatedTab = function() { 
       var findTargets; 

       findTargets = function() { 
        var $targets; 
        $targets = caller.getContainer().find('[data-vc-tabs]').filter(function() { 
         var $this, tab; 
         $this = $(this); 

         tab = $this.data('vc.accordion'); 
         if (undefined === tab) { 
          $this.vcAccordion(); 
         } 
         tab = $this.data('vc.accordion'); 

         return tab.getSelector() === caller.getSelector(); 
        }); 

        return $targets; 
       }; 

       if (! caller.isCacheUsed()) { 
        return findTargets(); 
       } 

       if (undefined === caller.relatedTab) { 
        caller.relatedTab = findTargets(); 
       } 

       return caller.relatedTab; 
      }; 
     } 

     Plugin.call(caller.getRelatedTab(), e.type); 
    }; 

    $(document).on('click.vc.tabs.data-api', '[data-vc-tabs]', clickHandler); 
    $(document).on('show.vc.accordion hide.vc.accordion', changeHandler); 
}(window.jQuery); 

的Html

<div class="vc_row wpb_row td-pb-row"><div class="wpb_column vc_column_container td-pb-span12"> 
    <div class="wpb_wrapper"><div class="vc_tta-container" data-vc-action="collapse"> 
     <div class="vc_general vc_tta vc_tta-tabs vc_tta-color-grey vc_tta-style-classic vc_tta-shape-rounded vc_tta-spacing-1 vc_tta-tabs-position-top vc_tta-controls-align-left"> 
      <div class="vc_tta-tabs-container"> 
       <ul class="vc_tta-tabs-list"> 
        <li class="vc_tta-tab vc_active" data-vc-tab><a href="#1446604677128-25463b2a-f24d" data-vc-tabs data-vc-container=".vc_tta"><span class="vc_tta-title-text">Tab 1</span></a></li> 
        <li class="vc_tta-tab" data-vc-tab><a href="#1446604677478-7e69336f-9679" data-vc-tabs data-vc-container=".vc_tta"><span class="vc_tta-title-text">Tab 2</span></a></li> 
       </ul> 
      </div> 
    <div class="vc_tta-panels-container"> 
     <div class="vc_tta-panels"> 
      <div class="vc_tta-panel vc_active" id="1446604677128-25463b2a-f24d" data-vc-content=".vc_tta-panel-body"> 
       <div class="vc_tta-panel-heading"><h4 class="vc_tta-panel-title"><a href="#1446604677128-25463b2a-f24d" data-vc-accordion data-vc-container=".vc_tta-container"><span class="vc_tta-title-text">Tab 1</span></a></h4></div> 
        <div class="vc_tta-panel-body"> 
         <div class="wpb_text_column wpb_content_element "> 
          <div class="wpb_wrapper"> 
           <p>I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.</p> 
          </div> 
         </div> 
        </div> 
      </div> 
      <div class="vc_tta-panel" id="1446604677478-7e69336f-9679" data-vc-content=".vc_tta-panel-body"><div class="vc_tta-panel-heading"><h4 class="vc_tta-panel-title"><a href="#1446604677478-7e69336f-9679" data-vc-accordion data-vc-container=".vc_tta-container"><span class="vc_tta-title-text">Tab 2</span></a></h4></div> 
       <div class="vc_tta-panel-body"> 
        <div class="wpb_text_column wpb_content_element "> 
         <div class="wpb_wrapper"> 
          <p>I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.</p> 
         </div> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div></div></div></div></div></div> 

如何:标签1停止&标签2当我点击标签2和标签2时重新加载内容停止&标签1当我点击标签时重新加载内容1

演示这样的websi te:http://www.fullmatchesandshows.com/2015/11/03/borussia-moenchengladbach-vs-juventus-highlights-full-match/

谢谢!

回答

0

我不知道你想通过“刷新内容”什么,而是你可以发射这样的显示在标签的东西:

$(document).on('show.vc.accordion', function() { 
    console.log('shown tab'); 
});