Показать сообщение отдельно
  #1 (permalink)  
Старый 22.04.2015, 13:36
Новичок на форуме
Отправить личное сообщение для ye1low Посмотреть профиль Найти все сообщения от ye1low
 
Регистрация: 22.04.2015
Сообщений: 3

Как по ссылке перейти на нужную вкладку?
Здравствуйте!
На одной странице есть ссылки на проекты. На второй странице есть описание проектов в виде закладок (tabs).
Как сделать так, чтобы при переходе по ссылке открывалась нужная вкладка с проектом.

На главной странице:
<div class="nav">
                        <a class="list-group-item" href="projects.html">Проект 1</a>
                        <a class="list-group-item" href="projects.html">Проект 2</a>
                        <a class="list-group-item" href="projects.html">Проект 3</a>
</div>


Вкладки на projects.html:

<div id="tabs" class="tabs">
                        <nav>
                            <ul>
                                <li><a href="#section-1"><span>Проект 1</span></a></li>
                                <li><a href="#section-2"><span>Проект 2</span></a></li>
                                <li><a href="#section-3"><span>Проект 3</span></a></li>
</ul>
</nav>

<div class="content">
<section id="section-1">
<div class="mediabox">
Текст проекта 1
</div>
</section>
<section id="section-2">
<div class="mediabox">
Текст проекта 2
</div>
</section>
<section id="section-3">
<div class="mediabox">
Текст проекта 3
</div>
</section>
</div>


Указание в ссылке на главной href="projects.html#section-2" не помогает, всё равно открывается 1-я вкладка

За работу вкладок отвечает скрипт (см. внизу)
В его коде есть такое объявление:

CBPFWTabs.prototype.options = {

		start : 0

	};


Как мне передать номер вкладки параметру start при нажатии на ссылку на Главной странице?

PS: В конце страницы с проектами встроен скрипт:

<script src="js/cbpFWTabs.js"></script>
            <script>
            new CBPFWTabs(document.getElementById('tabs'));
            </script>


А вот сам скрипт вкладок:

;( function( window ) {
	
	'use strict';


	function extend( a, b ) {
		for( var key in b ) { 
			if( b.hasOwnProperty( key ) ) {
				a[key] = b[key];
			}
		}
		return a;
	}

	function CBPFWTabs( el, options ) {
		this.el = el;
		this.options = extend( {}, this.options );
  		extend( this.options, options );
  		this._init();
	}

	CBPFWTabs.prototype.options = {

		start : 0

	};

	CBPFWTabs.prototype._init = function() {
		// tabs elemes
		this.tabs = [].slice.call( this.el.querySelectorAll( 'nav > ul > li' ) );
		// content items
		this.items = [].slice.call( this.el.querySelectorAll( '.content > section' ) );
		// current index
		this.current = -1;
		// show current content item
		this._show();
		// init events
		this._initEvents();
	};

	CBPFWTabs.prototype._initEvents = function() {
		var self = this;
		this.tabs.forEach( function( tab, idx ) {
			tab.addEventListener( 'click', function( ev ) {
				ev.preventDefault();
				self._show( idx );
			} );
		} );
	};

	CBPFWTabs.prototype._show = function( idx ) {
		if( this.current >= 0 ) {
			this.tabs[ this.current ].className = '';
			this.items[ this.current ].className = '';
		}
		// change current
		this.current = idx != undefined ? idx : this.options.start >= 0 && this.options.start < this.items.length ? this.options.start : 0;
		this.tabs[ this.current ].className = 'tab-current';
		this.items[ this.current ].className = 'content-current';
		
	};

	

	// add to global namespace
	window.CBPFWTabs = CBPFWTabs;



})( window );
Ответить с цитированием