Селектор по содержанию слова
Приветствую, есть такой код
$(function(){ $('.header__city-link').click(function(){ event.preventDefault(); $(".header__city-list").slideToggle('fast'); }); $('.header__city-item a').click(function(){ event.preventDefault(); var tx = $(this).html(); $(".header__city-list").slideUp('fast'); $(".header__city-link").html(tx); if ($(".header__city-link:contains(Железногорск)")) { $(".contacts__item--jeleznogorsk").addClass("contacts__item--active"); }else { $(".contacts__item--jeleznogorsk").removeClass("contacts__item--active"); } if ($(".header__city-link:contains(Белгород)")) { $(".contacts__item--belgorod").addClass("contacts__item--active"); }else { $(".contacts__item--belgorod").removeClass("contacts__item--active"); } if ($(".header__city-link:contains(Курск)")) { $(".contacts__item--kursk").addClass("contacts__item--active"); }else { $(".contacts__item--kursk").removeClass("contacts__item--active"); } }); }) Благодаря нему на сайт выводится список с городами, а также по идее если элемент с классом ".header__city-link" содержит в себе название одного из городов, этому городу с классом к примеру ".contacts__item--kursk", добавляется активный класс "contacts__item--active". Но моя задумка почему то не работает нормально при выборе города Железногорск, класс "contacts__item--active" добавляется всем вышеуказанным городам, а именно Железногорску, Белгороду, Курску. Хотя в коде выше указано конкретно, что если ".header__city-link" содержит именно текст Железногорск, только тогда добавляем класс"contacts__item--active". Кто подскажет в чем ошибка? |
Полностью бредовая реализация. Какой смысл чинить это?
Без протокола. Разве жикверь не передает элемент в функцию после $('.header__city-link').click ? |
Я не говорю, что это надо чинить) элемент в функцию передает. Как тогда мне реализовать задуманное?
|
Цитата:
Цитата:
Пишу ТЗ сам себе. В хтмле есть свернутый/скрытый список с названиями городов. Есть гиперлинк/ссылка открывающая этот список. В тексте этой ссыки название ранее выбранного города. Когда юзер щелкает по этой ссылке, список раскрывается/появляется и нужно выделить название того же самого города, который прописан в ссылке. Вопрос, в какой мухосрани начали селектить элементы по тексту? |
Просто добавь в ту самую ссылку атрибут с любым названием, в который тупо впиши идентификатор, по которому можно будет отождествить выбранное ранее в списке.
|
TommyDBrown,
со всех *.contacts__item-- класс убрать, выбрать нужный и установить. Цитата:
|
Список с городами, которые выбираем:
<div class="header__center-inner"> <div class="header__city"> <span>Ваш город: <a class="header__city-link" href="#">выберите город</a></span> <ul class="header__city-list"> <li class="header__city-item header__city-item--belgorod"><a href="#">Белгород</a></li> <li class="header__city-item header__city-item--vladimir"><a href="#">Владимир</a></li> <li class="header__city-item header__city-item--jeleznogorsk"><a href="#">Железногорск</a></li> <li class="header__city-item header__city-item--kursk"><a href="#">Курск</a></li> <li class="header__city-item header__city-item--orel"><a href="#">Орёл</a></li> </ul> </div> Для каждого города также есть html <ul> <li class="contacts__item contacts__item--belgorod"></li> <li class="contacts__item contacts__item--vladimir"></li> <li class="contacts__item contacts__item--jeleznogorsk"></li> <li class="contacts__item contacts__item--kursk"></li> <li class="contacts__item contacts__item--orel"></li> </ul> Т.е. когда выбираем к примеру Белгород, то нашему элементу <li class="contacts__item contacts__item--belgorod"> Добавляется также класс contacts__item--active. Если другой город выбираем, то для данного элемента мы класс удаляем "contacts__item--active", а новому присваиваем |
Ну вот как это появилось? - .contacts__item--jeleznogorsk - с точкой? У всех элементов с названиями городов индивидуальное оформление?
Берешь id, в него вписываешь хоть индекс массива, хоть код города, ну пусть транслит будет id="city-jeleznogorsk". Эту же самую хрень вписываешь в любой атрибут ссылки, скажем c="jeleznogorsk" - тут не нужен префикс, мы его просто добавили во избежание коллизий, мало ли какие названия могут быть. Теперь что? function showCityList(){ /* нашли список, он скажем в cityList */ cityList.getElementById('city-'+this.getAttribute('c')).classList.add('active'); } Какая религия запрещает сделать самому себе хорошо? Сервер не твой? Выколупай весь мозг тому, чей он и пусть сделает хорошо. |
Цитата:
|
TommyDBrown,
по индексу можно ... |
Часовой пояс GMT +3, время: 03:58. |