2012-05-14 2 views
0

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

Вот моя настройка, которая очень похожа на внешний интерфейс Outlook, я думаю.

Левая панель (плавающий div) содержит список контейнеров, на которые вы можете нажать (например, электронные письма). Панель правой руки содержит набор невидимых контейнеров, которые должны стать видимыми, когда их класс изменен на другой класс css.

Я пытаюсь настроить его там, где, если вы нажмете на элемент в левой панели, он затем выполнит действие javascript onclick (сохраненное во внешнем файле .js), которое переключает значение класса right div между двумя css классы.

Onclick в левой панели div передает $ _row ['uniqueID'] функции. То есть уникально увеличиваемое имя столбца. Это также значение ID правой панели.

Вводя это в целом, может ли кто-нибудь направить меня на то, как это сделать?

левой панели ...

<div onclick=\"toggleMenu('".$row['uniqueIdentifier'],"'); \"> 

правой панели ...

<div id=".$row['uniqueIdentifier']," class=\"mL\"> 

CSS ...

div.mL {display:none;} 
div.mL.active {display:block;} 
+0

Почему вы избегаете имен классов? – undefined

ответ

2
function toggleMenu(div){ 
    $('#'+div).addClass('active'); 
} 

jQuery имеет .addClass() и .removeClass() методы.

Я думаю, что это то, что вам нужно, сообщите мне, если нет.

+0

Спасибо! Дал мне синтаксис. На самом деле я был очень близок к своей работе, просто пропустил несколько персонажей. 'function toggleMenu (div) { $ ('#' + div) .toggleClass ('active'); } 'похоже, хорошо работает –

+0

Рад это услышать, если ваша проблема решена, пожалуйста, отметьте принятым. – MaddHacker

1

не изменяя слишком много кода, я предлагаю сделать это:

div.mL {display:none;} 
div.mLactive {display:block;} 

я стер точку, так что у меня сейчас 2 разных классов. Таким образом, при нажатии вы просто меняете класс div с правильным идентификатором на mLactive.

В JQuery это может быть сделано с помощью $ (# 'theid'). AddClass ('mLactive'); Это добавляет только новый класс. Вы также хотите удалить предыдущий класс с помощью $ (# 'theid'). RemoveClass ('mL');

Другой способ: $ (# 'theid'). Attr («класс», «mLactive»); Это не требует удаления предыдущего класса. Твой выбор. Другим преимуществом этого метода является то, что javascript имеет способ делать то, что не требует JQuery.

JQuery также имеет простые опции $ (# 'theid'). Show(); и $ (# 'theid). hide() btw.

+0

Спасибо за информацию.Я верю 'function toggleMenu (div) { $ ('#' + div) .toggleClass ('active'); } 'будет делать это, но вышесказанное полезно знать, поскольку я могу применить это к другим элементам. Теперь просто нужно выяснить, как только один div может быть переключен в активный класс за раз. Это отдельная проблема, хотя я буду исследовать. –

+0

Вы можете сделать что-то вроде: если щелкнуть, получите элемент с активным классом. Если элемент не найден, вы можете переключить элемент. Но если элемент был найден с активным классом, вы ничего не делаете. Работа с отключенными кнопками, вероятно, является более приятным способом, но для этого потребуется больше кода. – Anonymous

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