2013-07-15 4 views
0

Я пытаюсь создать меню с уникальными атрибутами данных, прикрепленными к каждому элементу навигации. При щелчке я хочу, чтобы этот элемент навигации находил раздел с тем же атрибутом и добавлял к нему класс. Это код, который я использую до сих пор (он является частью гораздо большего скрипта).Использовать атрибут find data для добавления класса

var $el = $('#bl-main'), 
$sections = $el.children('section'), 
$navItems = $('nav > a'); 


$navItems.on('click', function(event) { 

$el.addClass('bl-expand-item'); 
$navItems.find("[data-section='" + current + "']"); 
$sections.find("[data-section='" + $navItems + "']").addClass('expand expand-top'); 
}); 

Это сценарий, в котором он основан. http://tympanus.net/Development/FullscreenLayoutPageTransitions/

Идея состоит в том, чтобы добавить отдельную плавающую навигацию для ссылки на разные разделы (вместо прямого щелчка на разворачивание, которое реализовано в текущий момент). Добавленный текущий скрипт, похоже, обновляет страницу при нажатии. Я не мог заставить его работать на скрипке, поэтому исходный сценарий наверняка сработает. Секция, вставленная в мои локальные файлы, добавлена.

+4

Вы забыли пароль -> 'var $ section = $ ('section'),' – adeneo

+2

И поэтому разработчик JavaScript должен использовать Chrome Developers Console или Firebug. Я не могу развиваться без этих инструментов. Они настолько полезны для ошибок. – Shawn31313

+0

и ваш вопрос ...? –

ответ

0

В первой строке, когда вы пытаетесь вызвать элемент <section>, вам не хватает строки jQuery перед круглыми скобками. Это должно исправить ваш скрипт.

Так оно и должно выглядеть следующим образом:

var $section = $('section'); 

Это должно у вас все готово, чтобы продолжить!

0

Прежде всего вам не хватает вашего $ в первом присвоении переменной. var $ section = $ ('section')

После этого трудно сказать, что вы пытаетесь сделать, не видя свою разметку, но я возьму на нее удар.

Похоже, вы пытаетесь отфильтровать объект $ section атрибутом раздела данных элемента nav> a. Этот код должен делать только что:

var $section = $('section'), $navItems = $('nav > a'); 

$navItems.on('click', function(event) { 
    var $navSection = $section.filter("[data-section='" + $(this).data('section') + "']"); 
    $navSection.addClass('expand expand-top'); 
    return false; 
}); 

Обратите внимание, что мы фильтрацию всех секций по значению атрибута данных раздела, по которым щелкнули анкера.

Если это не поможет, добавьте свою разметку, чтобы мы могли видеть вашу структуру.

+0

Я обновил исходное сообщение с использованием сценария. Спасибо за помощь до сих пор. – bmlbml

+0

Я не могу помочь дальше, не увидев ваш html. Пожалуйста, опубликуйте это, и я помогу дальше. – drizzie