Основная проблема в том, что вы не соответствовали </div>
s внутри ваших collapsible-item-title
div
s. Просто удалите это, и это исправит переключение. Вы также можете добавить косые черты в свои теги img
.
Также я предполагаю, что вместо
$('.toggle-button').attr('src', '/images/collapse.png');
вы хотели иметь
$(this).siblings('.toggle-button').attr('src', '/images/collapse.png');
Вот исправленный код, размещенный на JS Bin:
http://jsbin.com/iruvo (редактируется через http://jsbin.com/iruvo/edit)
Наконец, вы можете значительно упростить ваш код jQuery путем рефакторинга ваших обработчиков событий в одну функцию:
function toggleIt() {
var collapsibleItem = $(this).parents('.collapsible-item');
var toggleButton = collapsibleItem.find('.toggle-button')
var currentImage = toggleButton.attr('src');
toggleButton.attr('src', currentImage === minusIcon ? plusIcon : minusIcon);
collapsibleItem.find('.togglethis').slideToggle('slow');
}
$('.toggle-button, .item-title-header').toggle(toggleIt, toggleIt);