Скрыть элемент в зависимости от содержимого
Здравствуйте, умные люди.
У меня такая задача: Если выбран город "Ростов-на-Дону" в блоке.cityName, скрыть блок.main_li. Код вот такой jQuery(document).ready(function () { var text = jQuery('.cityName').text(); if (parseInt(text) == 'г. Ростов-на-Дону') { jQuery('.main_li').style.display = 'none'; }; }); не срабатывает. Прошу помощи |
Цитата:
Откуда и что пытаемся сравнить? |
Значения могут быть разные, но если вот так
<a class="jstore-tag cityName lsp-js-changeTerminalForm">г. Ростов-на-Дону</a> то нужно скрыть li.main_li |
jQuery(document).ready(function () { if (jQuery('.cityName').text() == 'г. Ростов-на-Дону') jQuery('.main_li').hide(); }); |
if (parseInt(text) == 'г. Ростов-на-Дону') аналог if (false) :D |
Опишу подробнее
<div class="jstore-tag city-terminal-c"> Ресторан: <a class="jstore-tag cityName lsp-js-changeTerminalForm">г. Ростов-на-Дону</a> </div> По клику на ссылку в модальном окне выбирается город. Я подумал повесить указанный выше скрипт на клик по ссылке jQuery('.cityName').click(function () { if (jQuery('.cityName').text() == 'г. Ростов-на-Дону') jQuery('.main_li').hide(); }); :no: не работает :help: :help: |
.cityName - это ссылка, а значит как минимум нужно отменять действие по умолчанию:
jQuery('.cityName').click(function (e) { e.preventDefault(); if (jQuery('.cityName').text() == 'г. Ростов-на-Дону') jQuery('.main_li').hide(); }); Остальная "неработа" может быть связана с некорректной установкой обработчика. Вот только зачем эта проверка на содержимое если "в модальном окне выбирается город"? А если сотни городов, что так и будет перечислять в куче условий? |
Всего два города и больше не будет.
Цитата:
|
Цитата:
jQuery(document).ready(function () { jQuery('.cityName').click(function (e) { e.preventDefault(); if (jQuery('.cityName').text() == 'г. Ростов-на-Дону') jQuery('.main_li').hide(); }); }) и ваши ссылки есть на странице, и их текст равен опрашиваемому, то будет работать. Но если всего две ссылки, а значит скорее всего знаем, что первая, это обязательно Ростов, то можно и по индексу работать. |
Да вроде все так, но то, что мне нужно, не происходит.
Не сочтите за труд, гляньте на страницу http://dimash24.ru/, пожалуйста |
А что нужно?
|
Справа от логотипа выбор города, если выбран Ростов, скрыть блок "Пицца" :)
|
В списке что-ли? А если я захочу изменить город, тогда как как это сделать?
|
Вот на картинке схематично изобразил.
|
Ну так это типа фильтра вы ходите сделать, так?
|
Ну вроде того
|
Не выставляйте таких картинок, они прокручивают страницу, это мешает просмотру основного.
У вас же сервер знает, что кому принадлежит. Поэтому, при выводе страницы свяжите опции списка со соответствующими LI содержащими их изображения именами классов. Можно и по data-id, тогда в обработчике изменения: $('span.cityItem').click(function() { $('li[data-id]').not($('li[data-id!='+this.getAttribute('data-id')+']').hide()).show() }) добавив эти атрибуты LI <li data-id="51c88886-7a23-f24e-0161-5b68dac8dc1d"... <li data-id="51c88886-7a23-f24e-0161-56abf9398685"... соответственно. |
Вы вот так имеете в виду?
jQuery(document).ready(function () { $('span.cityItem').click(function() { $('li[data-id="51c88886-7a23-f24e-0161-56abf9398685"]').not($('li[data-id!='+this.getAttribute('data-id')+']').hide('.main_li')).show() }) }) |
Цитата:
$('li[data-id]').not($('li[data-id!='+this.getAttribute('data-id')+']').hide()).show() - означает $('li[data-id]') - все элементы LI имеющие атрибут data-id .not($('li[data-id!='+this.getAttribute('data-id')+']').hide()) - исключая те, у которых значение этого атрибута не равно значению span, по которому щелкнули, и которые нужно скрыть .show() - показать Если сделать так как вы пишите, то будут показывать только те, значения которых равно указанному. Что трудно дать LI которые относятся к тому или иному городу те же самые атрибуты как и города (span) и проверить как работает? |
Цитата:
|
Часовой пояс GMT +3, время: 13:37. |