Есть набор маркеров, которые отображаются 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());
}
});
});
});
Это происходит от того, что вы не сбрасываете состояние метки с которой "ушли". Т.е. накликали метку n раз, и там остался какой-то статус, a какой - неизвестно.
Решение - сбросить статус при "уходе" с метки. Непонятно конкретно, с какой метки вы ушли, поэтому сбросим у остальных двух. Примерно так:
$('.markerBtn').not(this).attr('data-state', 'off');
если по-умолчанию они off
Сборка персонального компьютера от Artline: умный выбор для современных пользователей