[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Изменение класса ссылки активного раздела.
vegasmoscow
Есть скрипт, который меняет свойство ссылки раздела, на котором находишься:

Код
<script>
onload = function () {
for (var lnk = document.links, j = 0; j < lnk.length; j++)
if (lnk [j].href == document.URL) lnk [j].style.color = 'предпочитаемый_цвет_например_red';
}
</script>


Моя задача несколько шире, но пробелы в знании языка JavaScript доставляют некоторые трудности в ее решении smile.gif Мне нужно, чтобы этот скрипт не толкько менял свойство ссылки активного раздела в меню навигации, но и назначал другой класс и только в определенном блоке со своим id.

Почему именно с определенным id? Потому что есть другие блоки ссылок, которым вовсе не нужно присваивать класс ссылки активного раздела.



Спустя 6 минут, 34 секунды (24.09.2009 - 18:14) waldicom написал(а):
В JQuery это делается одной строчкой. Только вот вопрос, возможен и желателен ли переход на JQuery?

Спустя 2 минуты, 10 секунд (24.09.2009 - 18:16) vegasmoscow написал(а):
waldicom, О ДА!!! Не только желателен, а необходим!

Убедился в этом, когда скруглял уголки DIV-ов, указываешь id, пишешь какой тип уголка, размер и все! Только для этого , помимо библиотеки jQuery, понадобилась еще одна, которая специально для этой задачи и создана была jQuery.corner.js .

Спустя 2 минуты, 23 секунды (24.09.2009 - 18:19) waldicom написал(а):
Тогда примерно так:

HTML
jquery('#ELEMENTID').addclass('CLASS');

Спустя 6 минут, 30 секунд (24.09.2009 - 18:25) vegasmoscow написал(а):
waldicom, эта строчка понятна, но как присвоить класс именно той ссылке, в разделе которой находишься? Поясню: этот класс будет работать для одной единственной ссылки. Вопрос как ее выделить? Или эту строчку нужно использовать с кодом, который я приводил вначале?

Спустя 8 минут, 11 секунд (24.09.2009 - 18:33) waldicom написал(а):
Эта строчка сделает это:
Цитата
но и назначал другой класс и только в определенном блоке со своим id.

Т.е. после выполнения
HTML
jquery('#ELEMENTID').addclass('CLASS');

элемент с id="ELEMENTID" будет иметь дополнительный класс с названием CLASS

Или я неправильно понял задачу?

Вот тут еще можно почитать: http://docs.jquery.com/Addclass

Спустя 15 минут, 23 секунды (24.09.2009 - 18:49) vegasmoscow написал(а):
waldicom, да, я не совсем понятно написал, возможно, попробую иначе. Есть блок DIV, в котором находится меню навигации - НОВОСТИ ГАЛЕРЕЯ О КОМПАНИИ КОНТАКТЫ и тд.. так вот, у этого блока есть свой класс, который распространяется и на ссылки, например "class". Мне нужно назначить новый класс только той ссылке, в разделе которой я нахожусь, например, я кликнул по разделу НОВОСТИ, после загрузки страницы с новостями, в меню навигации ссылка НОВОСТИ должна поменять класс "class" на "new_class"! Это будет говорить о том, что юзер находится на странице с новостями!

Но! Это правило должно действовать только в пределах данного блока DIV, потому что в других блоках со ссылками эта функция не нужна.

Я нашел решение со сменой класса:

Код
<script>
onload = function () {
for (var lnk = document.links, j = 0; j < lnk.length; j++)
if (lnk [j].href == document.URL) lnk [j].className = 'new_link';
}
</script>


Только как можно сделать, чтобы это скрипт работал только для определенного блока?



Спустя 6 минут, 48 секунд (24.09.2009 - 18:56) waldicom написал(а):
Я бы такие вещи делал при генерации страницы, а то зачем нам после генерации страницы еще и фваскриптом по ней бежать. Но если уж очень надо, то тогда можно так:

присваеваем DIV'у какой-либо ID, например
HTML
<div id="menu">

Затем делаем так
HTML
jquery('#menu a').addclass('CLASS');

После этого, все ссылки внутри DIV'а с id=menu будут иметь новый класс CLASS

Спустя 1 час, 39 минут, 58 секунд (24.09.2009 - 20:36) vegasmoscow написал(а):
waldicom, вот, направление мысли верное, но всем ссылкам не нужно присваивать новый класс, а только той, по которой юзер перешел на текущую страницу! Можете для примера посмотреть вот здесь, на отладочном домене. Только это пока черновой вариант, заодно посмотрите, как ведут себя ссылки в верхнем меню, в левом и в нижнем, а нужно, чтобы только в левом.


PS
Цитата
Я бы такие вещи делал при генерации страницы, а то зачем нам после генерации страницы еще и яваскриптом по ней бежать.


сайт сделан на вордпрессе, поэтому,на мой взгляд, проще что то добавить, чем все перепрограммировать.

Спустя 1 час, 4 минуты, 39 секунд (24.09.2009 - 21:40) Гость_hara написал(а):
и всё же надо делать так как сказал waldicom, - хотя бы потому что это не будет вариантом "через одно место" - то есть это единственный приемлимый вариант.

варианты такие:

1. пробегать js по ссылками и сравнивать с урлом страницы и уже менять у нужной ссылке класс
2. при выводе меню php скриптом сразу выводить выбранную ссылку с нужным классом
и к слову - вообще лучше что бы это была уже не ссылка а просто текст.

1 - естественно костыль, - но его решение уже есть.
2 - а какая разница где что то добавлять? ну добавте в php а не в js - вам какая разница?
- зато это будет по человечьи.

PS ну так у вас же сейчас там красным цветом выделяется, ну так найдите это место
и поменяйте там чуть чуть... если конечно - 1 это ещё не то чего нужно добиться 2 - это сейчас сделано не на js )

Спустя 47 минут, 49 секунд (24.09.2009 - 22:28) vegasmoscow написал(а):
Гость_hara, дело в том, что вордпрессовские функции вывода меню мне не совсем понятны (мягко говоря), а что касается красного цвета ссылок, это то, что мне нужно, я, собственно, это и сделал, добавив JavaScript код в хидере страницы, НО! мне нужно, чтобы этот код работал ТОЛЬКО для ссылок левого меню навигации, а у меня сейчас он работает абсолютно для всех ссылок на сайте! Вдобавок ко всему этот код убил яндекс карту в контактах.

Можно ли сделать так, что скрипт будет выбирать блок и, в зависимости от заданных параметров, определять, отрабатывать остальной скрипт или нет? Например, на пальцах: если id = menu_left , то .. и запускает скрипт изменения класса ссылок, в остальных случаях пропускает его. Возможно очень уж образно пример привел, но я в JavaScript совсем никак.

Спустя 1 час, 31 минута, 36 секунд (25.09.2009 - 00:00) vegasmoscow написал(а):
Вроде наковырял что то похожее здесь.. только проверять нужно на реальном хостинге и корректно указывать ссылки, иначе только первая ссылка будет светиться всегда.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.