From 54c2fa8b7bed926fd273f83bf13c098199690f50 Mon Sep 17 00:00:00 2001 From: Pavel Belousov Date: Fri, 5 Feb 2016 11:08:46 +0300 Subject: [PATCH] =?UTF-8?q?v1.0.2=20-=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D1=80=20selectAppendTo=20-=20=D0=98=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=BE=D0=B1=D0=BD=D0=B0=D1=80?= =?UTF-8?q?=D1=83=D0=B6=D0=B5=D0=BD=D0=BD=D1=8B=D0=B5=20=D0=BE=D1=88=D0=B8?= =?UTF-8?q?=D0=B1=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +- src/js/jquery.tabsToSelect.js | 68 +++++++++++++++++++++---------- src/js/jquery.tabsToSelect.min.js | 6 +-- 3 files changed, 52 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 816bd32..a985bf3 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,8 @@ $.tabsToSelect({ selectCalss: 'styler', // Класс, добавляемый с обёртке селекта selectWrapperCalss: 'styler-wrapper', + // Куда вставлять сформированный селект (селектор внутри блока с табами) + selectAppendTo: '', onInit: function () { // Срабатывает при инициализации плагина }, @@ -41,6 +43,6 @@ $.tabsToSelect({ }, onResized: function () { // Срабатывает при изменении размера окна - }, + } }); ``` diff --git a/src/js/jquery.tabsToSelect.js b/src/js/jquery.tabsToSelect.js index 23730c7..782bdba 100644 --- a/src/js/jquery.tabsToSelect.js +++ b/src/js/jquery.tabsToSelect.js @@ -1,8 +1,8 @@ /**! * Плагин для реализации адаптивных табов, превращающихся в селект * @link https://github.com/pafnuty/tabsToSelect - * @date 27.10.2015 - * @version 1.0.0 + * @date 05.02.2016 + * @version 1.0.2 * */ (function ($, window, document) { @@ -10,12 +10,15 @@ var pluginName = 'tabsToSelect', previousResizeWidth = 0, $window = $(window), - $tabs = $('.tts-tabs'), + // $document = $(document), + $tabs, defaults = { // Класс, добавляемый с селекту selectCalss: '', // Класс, добавляемый с обёртке селекта selectWrapperCalss: '', + // Куда вставлять сформированный селект (селектор внутри блока с табом) + selectAppendTo: '', // Срабатывает при инициализации плагина onInit: function () {}, // Срабатывает перед сменой активного таба @@ -25,10 +28,19 @@ // Срабатывает после смены активного таба afterTabSwich: function (event) {}, // Срабатывает при изменении размера окна - onResized: function () {}, + onResized: function () {} }; + /** + * Костылёк, но без него некорректно работает, если перенести скрипт в шапку. + * + * @todo По хорошему нужно переписать плагин. + */ + $(function () { + $tabs = $('.tts-tabs'); + }); + function Plugin(obj, options) { this.settings = $.extend({}, defaults, options); @@ -44,22 +56,22 @@ // Пробегаем по табам $.each($tabs, function () { - var $this = $(this), // Текущий блок с табами + var $tabBlock = $(this), // Текущий блок с табами $select = $(''),a=i.find(".tts-tabs-switcher"),c=[];t.each(a,function(e,i){var s=t(i),n=s.hasClass("active")?"selected":"",a='";c.push(a)}),s.html(c.join("")).on("change."+n,function(e){if(!e.flag){var i=1*t(this).val();t(this).trigger({type:"tabSwitch."+n,tab:i})}}),i.prepend(s).on("click."+n,".tts-tabs-switcher:not(.active)",function(){var e=t(this).index();t(this).trigger({type:"tabSwitch."+n,tab:e})}).on("tabSwitch."+n,function(c){var r=e.settings.beforeTabSwich.call(i,c);if(r){var o=t(a[c.tab]),l=o.closest(".tts-tabs").find(".tts-tabs-item"),h=l.eq(o.index());s.val(c.tab).trigger({type:"change",flag:!0}),o.addClass("active").siblings().removeClass("active"),l.removeClass("active"),h.addClass("active"),o.trigger({type:"tabClick."+n,tab:h})}e.settings.afterTabSwich.call(i,c)}),s.wrap('
')}),c.on("resize."+n+" orientationchange."+n,function(t){e.winResize(t)}),e.settings.onInit.call(r)},winResize:function(t){if(t&&("resize"===t.type||"orientationchange"===t.type)){var e=c.width();if(e===a)return;this.settings.onResized(),a=e}}}),void 0==t[n]&&(t[n]=function(t){return new s(this,t)})}(jQuery,window,document); \ No newline at end of file +!function(t,e,i){"use strict";function s(e,i){this.settings=t.extend({},r,i),this._defaults=r,this.init()}var n,a="tabsToSelect",c=0,o=t(e),r={selectCalss:"",selectWrapperCalss:"",selectAppendTo:"",onInit:function(){},beforeTabSwich:function(t){return!0},afterTabSwich:function(t){},onResized:function(){}};t(function(){n=t(".tts-tabs")}),t.extend(s.prototype,{init:function(){var e=this;t.each(n,function(){var i=t(this),s=t('