Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.09.2016, 17:49
Новичок на форуме
Отправить личное сообщение для TommyDBrown Посмотреть профиль Найти все сообщения от TommyDBrown
 
Регистрация: 28.06.2011
Сообщений: 6

Селектор по содержанию слова
Приветствую, есть такой код
$(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". Кто подскажет в чем ошибка?
Ответить с цитированием
  #2 (permalink)  
Старый 27.09.2016, 18:07
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Полностью бредовая реализация. Какой смысл чинить это?

Без протокола. Разве жикверь не передает элемент в функцию после $('.header__city-link').click ?
Ответить с цитированием
  #3 (permalink)  
Старый 27.09.2016, 18:12
Новичок на форуме
Отправить личное сообщение для TommyDBrown Посмотреть профиль Найти все сообщения от TommyDBrown
 
Регистрация: 28.06.2011
Сообщений: 6

Я не говорю, что это надо чинить) элемент в функцию передает. Как тогда мне реализовать задуманное?
Ответить с цитированием
  #4 (permalink)  
Старый 27.09.2016, 18:17
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Сообщение от TommyDBrown
если элемент с классом ".header__city-link" содержит в себе название одного из городов
В себе это где? Одного из городов, которые где?

Цитата:
этому городу с классом к примеру
Вот так прямо городу?

Пишу ТЗ сам себе. В хтмле есть свернутый/скрытый список с названиями городов. Есть гиперлинк/ссылка открывающая этот список. В тексте этой ссыки название ранее выбранного города. Когда юзер щелкает по этой ссылке, список раскрывается/появляется и нужно выделить название того же самого города, который прописан в ссылке.

Вопрос, в какой мухосрани начали селектить элементы по тексту?
Ответить с цитированием
  #5 (permalink)  
Старый 27.09.2016, 18:19
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Просто добавь в ту самую ссылку атрибут с любым названием, в который тупо впиши идентификатор, по которому можно будет отождествить выбранное ранее в списке.
Ответить с цитированием
  #6 (permalink)  
Старый 27.09.2016, 18:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

TommyDBrown,
со всех *.contacts__item-- класс убрать, выбрать нужный и установить.
Сообщение от warren buffet
Разве жикверь не передает элемент в функцию после $('.header__city-link').click
this в функции будет нажатый элемент
Ответить с цитированием
  #7 (permalink)  
Старый 27.09.2016, 18:25
Новичок на форуме
Отправить личное сообщение для TommyDBrown Посмотреть профиль Найти все сообщения от TommyDBrown
 
Регистрация: 28.06.2011
Сообщений: 6

Список с городами, которые выбираем:
<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", а новому присваиваем
Ответить с цитированием
  #8 (permalink)  
Старый 27.09.2016, 18:34
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Ну вот как это появилось? - .contacts__item--jeleznogorsk - с точкой? У всех элементов с названиями городов индивидуальное оформление?

Берешь id, в него вписываешь хоть индекс массива, хоть код города, ну пусть транслит будет id="city-jeleznogorsk". Эту же самую хрень вписываешь в любой атрибут ссылки, скажем c="jeleznogorsk" - тут не нужен префикс, мы его просто добавили во избежание коллизий, мало ли какие названия могут быть.

Теперь что?

function showCityList(){

    /* 
        нашли список, он скажем в cityList
    */

      cityList.getElementById('city-'+this.getAttribute('c')).classList.add('active');

}


Какая религия запрещает сделать самому себе хорошо? Сервер не твой? Выколупай весь мозг тому, чей он и пусть сделает хорошо.
Ответить с цитированием
  #9 (permalink)  
Старый 27.09.2016, 18:40
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Сообщение от TommyDBrown
<span>Ваш город: <a class="header__city-link" href="#">выберите город</a></span>
Ну выбрал он город, и теперь его надо в ссылку запихать. Это же хрестоматийная фича, у меня на всех сайтах есть такая. Ну и запихивай в ссылку не только текст, но и идентификатор, и в куки его пиши - идентификатор, или в бд пиши, откуда-то же берется этот транслит.
Ответить с цитированием
  #10 (permalink)  
Старый 27.09.2016, 18:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

TommyDBrown,
по индексу можно ...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтр по начальным буквам слова Shasoft Общие вопросы Javascript 13 22.03.2015 11:20
Выбор случайного слова из списка alerzo Элементы интерфейса 3 19.04.2014 15:46
необходими разделить строку на слова и положить слова в массив при помощи цикла for oneee Общие вопросы Javascript 5 05.09.2012 14:30
Динамический селектор raindew Элементы интерфейса 3 20.11.2011 18:37
Предыдущий селектор KupueIIIKo jQuery 1 05.10.2011 01:27