Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.02.2013, 12:33
Аспирант
Отправить личное сообщение для modestes Посмотреть профиль Найти все сообщения от modestes
 
Регистрация: 12.04.2012
Сообщений: 43

Скрытие элементов.
Приветствую.

Есть интерактивная карта с метками.
Нужно чтобы изначально все метки были показаны, а при клике на определенную область карты оставалась метка на этой области а остальные скрывались.
Подскажите пожалуйста как это реализовать на jquery, понимаю что нужно использовать событие click.
У каждой области карты есть свой класс, например class="india" а у метки для этой области класс class="m_india"
Если можно пример кода.

Последний раз редактировалось modestes, 06.02.2013 в 12:39.
Ответить с цитированием
  #2 (permalink)  
Старый 06.02.2013, 12:43
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Вы используете map и area?

Последний раз редактировалось tsigel, 06.02.2013 в 12:54.
Ответить с цитированием
  #3 (permalink)  
Старый 06.02.2013, 12:56
Аспирант
Отправить личное сообщение для modestes Посмотреть профиль Найти все сообщения от modestes
 
Регистрация: 12.04.2012
Сообщений: 43

Сообщение от tsigel Посмотреть сообщение
Вы используете map и area?
Да
Ответить с цитированием
  #4 (permalink)  
Старый 06.02.2013, 13:00
Аспирант
Отправить личное сообщение для modestes Посмотреть профиль Найти все сообщения от modestes
 
Регистрация: 12.04.2012
Сообщений: 43

Вариант кроме как проверять через условие не вижу, кто муже в этом варианте много кода, нужно ведь прописывать все классы, потом их проверять и т.д. Мне кажется это можно решить так сказать в "пару строк". Но как, не пойму.
Ответить с цитированием
  #5 (permalink)  
Старый 06.02.2013, 13:08
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

вы можете добавить всем меткам один общий класс (плюс к тому что есть), и у вас должен быть общий класс у метки для областей и области.

Дальше все просто, Вы можете забрать класс из области (с помощью attr('class')), в некую переменную, затем убрать из неё все лишнее с помощью replace() и скрыть все метки не имеющие полученный класс

Последний раз редактировалось tsigel, 06.02.2013 в 13:18.
Ответить с цитированием
  #6 (permalink)  
Старый 06.02.2013, 13:14
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Допустим у всех областей есть класс area, рассмотрим вариант что надо снять все метки кроме индии, все метки имеют класс label:
$('.area').click(function() {
  var class = $(this).attr('class').replace('area ', ''); //класс должен быть "area india"
  //теперь переменная class содержит "india"
  $('.label').each(function() {
    if (!$(this).hasClass(class)) {
       $(this).css('display', 'none');      
     }
   })
})
Ответить с цитированием
  #7 (permalink)  
Старый 06.02.2013, 13:28
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Изучайте объектно-ориетированный javascript, Вы заметите что очень многие вещи станут намного-намного проще (например построение связей между событиями и html элементами).

Могу скинуть ссылку на карту выполненную с помощью ООП, и дать комментарии.
Ответить с цитированием
  #8 (permalink)  
Старый 06.02.2013, 13:39
Аспирант
Отправить личное сообщение для modestes Посмотреть профиль Найти все сообщения от modestes
 
Регистрация: 12.04.2012
Сообщений: 43

Сообщение от tsigel Посмотреть сообщение
Изучайте объектно-ориетированный javascript, Вы заметите что очень многие вещи станут намного-намного проще (например построение связей между событиями и html элементами).

Могу скинуть ссылку на карту выполненную с помощью ООП, и дать комментарии.
Спасибо за пример, получилось )).

От ссылки не откажусь, лишним не будет.
Ответить с цитированием
  #9 (permalink)  
Старый 06.02.2013, 13:43
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

http://tsigel.1gb.ru/my_projects/map/index.html

стили я там не делал ещё, я выдрал это из своего проекта, который работает локально
Ответить с цитированием
  #10 (permalink)  
Старый 06.02.2013, 15:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,069

Вариант...
<!DOCTYPE HTML>
<html>
<head>
  <title></title>
<style type="text/css">
label{
  background-color: #FFFFFF;
}
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(function () {
$('.aria').click(function (event) {
var  t=Math.ceil(Math.random()*16777214);
$(this).parent().find('[class ^= "m_"]:visible').hide()
$(this).css({'backgroundColor': '#'+t.toString(16)}).children('[class ^= "m_"]').show()
event.stopPropagation();
	})
});
</script>
</head>
<body>
<div class="aria rossia">rossia <label class="m_rossia">rossia</label></div>
<div class="aria india">india <label class="m_india">india</label></div>
<div class="aria shvecia">shvecia <label class="m_shvecia">shvecia</label></div>
<div class="aria polsha">polsha <label class="m_polsha">polsha</label></div>
</body>
</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СКРЫТИЕ ЭЛЕМЕНТОВ ТАБЛИЦЫ Brook Events/DOM/Window 15 10.03.2024 11:08
запретить изменение количество элементов в списке Antistas jQuery 0 05.12.2012 14:05
Отображение и скрытие элементов UL Surlik jQuery 0 19.02.2012 17:20
Скрытие элементов на JS alex_89 Элементы интерфейса 5 12.05.2011 09:29
Скрытие нескольких независимых элементов shik Элементы интерфейса 8 09.12.2010 08:57