Скрыть элемент в зависимости от содержимого
Здравствуйте, умные люди.
У меня такая задача: Если выбран город "Ростов-на-Дону" в блоке.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, время: 02:28. |