2012-05-16 2 views
0

Ссылка на якорь в содержимом с вкладками от внешняя ссылкаGo to anchor. Скрипт должен быть добавлен как глобальный файл по всем страницам/шаблонам. Пример того, что у меня есть I have so far.Ссылка на якорь внутри содержимого с вкладками по внешней ссылке

нажмите на <a goto="stuff" href="#test">Go to stuff</a>/который идет на третьей вкладке .

jsfiddle

+0

Похоже, описание работы. – zerkms

+0

Что именно ваш вопрос? –

+0

спасибо за инструкции. – undefined

ответ

0

Проблема заключается в том, что $ (window.location.hash) оценивает в $ ('# тест'), так это выглядит для элемента с ID = "тест". Такой элемент не существует на вашей странице.

Используя ссылку, как это:

http://www.canberra.edu.au/media/test/bookmark.html/#test

обычно указывают, что вы хотите, чтобы перейти к содержимому, помеченной именем якорный = «тест».

В вашем примере я могу видеть, по крайней мере, два якоря с тем же атрибутом имя:

<a name="test"></a> 

Это неправильно - имена анкерные должны быть уникальными:

http://www.w3.org/TR/html401/struct/links.html#idx-anchor-4

Так как только вы исправить это и имеет уникальное имя привязки, вы можете использовать href вместо вашего атрибута goto. Это также хорошая идея использовать как имя и идентификатор:

<a id="test" name="test"></a> 

который составит $ (window.location.hash) работать, как ожидалось.

Так что теперь это должно активировать правильную вкладку:

var $targetAnchor = $(window.location.hash); 
tabId = $targetAnchor.closest('.tab-content').attr('id'); 
$tabs.find('a[href=#' + tabId + ']').click(); 

И это должно работать для прокрутки:

$('html, body').animate({ 
    scrollTop: $targetAnchor.offset().top 
}); 
+0

Спасибо Kfej - Я слишком долго смотрел на это и пропустил этот второй якорь. Хорошо, так хорошо, как я могу переносить прокрутку на якорь? – NickP

+0

не уверен, как это все собрать - не могли бы вы добавить его здесь? Я был бы очень благодарен :-) http://jsfiddle.net/dhirajbodicherla/TGMDd/2/ – NickP

+0

Нет, теперь оставим обработчик привязки так, как это было - все получилось отлично, не так ли? Добавьте мой код в конец $ (document) .ready для обработки входящих внешних запросов. Я могу отредактировать ваш jsfiddle, когда у меня есть минута. – jfrej

Смежные вопросы