2014-07-06 6 views
2

Я пытаюсь развернуть сообщения при нажатии и свернуть их при нажатии на определенный элемент. Я использую два разных класса: один для того, когда элемент свернут, а другой - для отображения всего сообщения.Сообщения об ошибках с jquery и css

Проблема: элементы расширяются при нажатии, как ожидалось, но когда я нажимаю Распад элемент ничего не происходит (класс не меняется).

упрощенная версия HTML/JQuery/CSS используется показано ниже:

<div id="content"> 
    <div id="messages"> 
    <div class="collapsed_message"> 
     <!-- couple of other elements go here see jsfiddle--> 
     <div class="message_content"> 
      Message goes here 
     </div> 
     <span class="collapse_bar"> 
     <span class="re_collapse">[collapse]</span> 
     </span> 
    </div> 
    </div> 
</div> 

CSS:

.collapsed_message{ 
    overflow:hidden; 

} 
.entire_message{ 
    // other styling here 
} 

JavaScript/JQuery:

$(document).ready(function() { 
$(".collapsed_message").click(function() { 
    $(this).addClass('entire_message').removeClass("collapsed_message"); 
}); 
$(".re_collapse").click(function() { 
    $(this).parent().parent().addClass("collapsed_message").removeClass('entire_message'); 
}); 
}); 

Для получения полной копии кода см. jsfiddle: http://jsfiddle.net/8vDZb/

+0

Вы добавили слушателя: '$ (". Re_collapse "). Click (function() {', но класс '.re-collapse' никогда не существует, поэтому прослушивание никогда не активируется. Кроме того, у вас есть небольшой typo в теге ''. Вы не закрываете этот тег. Используйте '/>' для закрытия тегов ''. – Narxx

+0

Что вы имеете в виду под классом .re_collapse never exsists? Я смотрю на него в строке 57 fiddle – user3247608

+0

Да, извините, что - не видел этого. Я немного отлаживал ваш код, но похоже, что @Dimitri Jorse пригвоздил его. Попробуйте добавить некоторые «console.log()» к вашим слушателям и посмотреть Когда каждый из них запускается. Посмотрите: http://jsfiddle.net/8vDZb/2/ – Narxx

ответ

3

Во-первых, я бы предположил, что вы используете плагин, такой как Jquery-ui Accordion.

Если вы действительно хотите знать, что здесь не так:

У вас есть слушатель на .collapsed_message класса. После того, как вы нажмете на этот элемент, вызывается обратный вызов и класс удаляется. Тем не менее, слушатель по-прежнему подключен, поэтому, когда вы нажимаете на [свернуть], он вызывается снова, потому что .re_collapse содержится в элементе .collapsed_message.

Это означает, что оба обратных вызова запускаются.

+0

Похоже, вы правы, @Dimitri Jorge , Просмотрите консольный журнал на этой скрипке: http://jsfiddle.net/8vDZb/2/ Это объясняет это. – Narxx

+0

Спасибо за ответ и плагин – user3247608

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