2016-03-08 5 views
-2

Вот скрипка:JS ориентируетесь неправильный объект

https://jsfiddle.net/0a0yo575/10/

Я пытаюсь показать одну коробку, в верхнем левом углу, в то время, в зависимости от того, что является активным. Но на данный момент JS удаляет точку, а не поле?

$('.red-point').click(function() { 
    $('.infobox').removeClass('hidn').addClass('show'); 
    $(this).removeClass('show').addClass('hide'); 
}); 
+2

Вопросы ищут отладки помощь («почему этот код не работает?») должен включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для воспроизведения в самом вопросе. Вопросы без четкого описания проблемы не полезны другим читателям. См. [Как создать минимальный, завершенный и проверяемый пример] (http://stackoverflow.com/help/mcve). –

+0

Вы ошиблись? '.removeClass ('hidn')' должен быть '.removeClass ('hide')'? – Hydrospanners

+0

Изменен на орфографию, но ничего не изменил: https://jsfiddle.net/0a0yo575/11/ И Маркос Я это сделал! – DFGD

ответ

0

В текущем коде $(this) относится к маркеру вы щелкнули. Поэтому, когда вы говорите $(this).removeClass('show').addClass('hide');, вы скрываете маркер с кликом.

Если вы даете .infobox элементов в class, который соответствует id из щелкнутых маркеров ...

<div class="infobox hide termini">Bar<br>Termini</div>

... вы можете переключать их, как это ...

$('.red-point').click(function() { 
    $('.infobox').removeClass('show').addClass('hide'); 
    $('.' + $(this).attr('id')).addClass('show'); 
}); 

JSFiddle Example


Лично я хотел бы дать каждому маркеру атрибут данных, содержащий нужный infowindow текст и использовать это, чтобы заполнить один infowindow ...

<div class="infobox hide"></div> 

<div class="abs red-point" id="termini" data-description="Bar<br>Termini"> 
    <a onClick="turnGreen(event)"> 
     <span class="num">1</span> 
    </a> 
</div> 

$('.red-point').click(function() { 
    $('.infobox').removeClass('hide').addClass('show').html($(this).data('description')); 
}); 

JSFiddle Example

Смежные вопросы