Отображение и скрытие данных массива

473
07 февраля 2017, 22:20

Есть набор маркеров, которые отображаются JS кодом при определенных условиях. При первом нажатии отображаются маркеры выбранного пункта, при повторном нажатии появляются снова все возможные маркеры. Но если включен 1 пункт и следовательно его маркеры, и тут ты переключаешься на другой пункт, то появляется путаница между маркерами и вместе со 2 пунктом могут показываться маркеры 1 или 3 пункта(их всего 3). А нужно чтобы при определенном включенном пункте показывались только его маркеры(даже если перешли с включенного 1 пункта, он должен отключиться). При повторном нажатии на пункт, снова все возможные.

$(document).ready(function() {
  $('.markerBtn').bind('click', function(el) {
    var catToToggle = $(this).attr('data-category'); /* категория нажатой метка */
    var catState = $(this).attr('data-state'); /* статус нажатой метки */
    if ( catState=='on') {
      $(this).attr('data-state', 'off');
    } else {
      $(this).attr('data-state', 'on');
    }
    $.each(map.markers, function() {
      if (this['category'] == catToToggle) {
        if ( catState=='on') {
          this.setVisible(true);
        } else {
          this.setVisible(true);/*отображаю эту метку в любом случае для данного пункта*/
        }
      } else {
        this.setVisible(!this.getVisible());
      }
    });
  });
});
Answer 1

Это происходит от того, что вы не сбрасываете состояние метки с которой "ушли". Т.е. накликали метку n раз, и там остался какой-то статус, a какой - неизвестно.

Решение - сбросить статус при "уходе" с метки. Непонятно конкретно, с какой метки вы ушли, поэтому сбросим у остальных двух. Примерно так:

$('.markerBtn').not(this).attr('data-state', 'off');

если по-умолчанию они off

READ ALSO
Регулярные выражения, символ “^”

Регулярные выражения, символ “^”

Вот только недавно начал JavaScript и можете помочь либо "пнуть" в нужном направленииКак проверить в регулярных выражениях символ ^? Например:

532
Вывести название в метку карты

Вывести название в метку карты

вывожу карту и нужно сделать вывод название города в метку на карту, пробовал так iconContent: 'Нижний Новгород' но ничего

443
Как передать параметры через GET-запрос

Как передать параметры через GET-запрос

Я начинающий и не знаю как отправить все необходимые параметры странице, которую хочу открытьИмеется страница с url sklad

474
CSS-свойства SVG-изображения

CSS-свойства SVG-изображения

Интересует, можно ли как-то при помощи JS или CSS менять свойства сложного SVG-элемента, такие как "scale", "transform" и другиеНужно применить к элементу...

478