次のJSでアコーディオンメニューを作りました
$(function(){
$('#accordion .fullChild>a.opener').text('+').addClass('box');
$('#accordion .opener').click(function() {
if($(this).text() == "-") {
$(this).text("+");
}
else {
$(this).text("-");
}
});
});
function initMenus() {
$('ul#accordion ul').hide();
$('ul#accordion li a.opener').click(
function() {
var checkElement = $(this).next();
var parent = this.parentNode.parentNode.id;
if($('#' + parent).hasClass('noaccordion')) {
$(this).next().slideToggle('normal');
return false;
}
if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
if($('#' + parent).hasClass('collapsible')) {
$('#' + parent + ' ul:visible').slideUp('normal');
}
return false;
}
if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
$('#' + parent + ' ul:visible').slideUp('normal');
checkElement.slideDown('normal');
return false;
}
}
);
}
$(document).ready(function() {initMenus();});
それはすべて私が望むように機能しますが、1つだけです。1つのプラスを切り替えるとマイナスに変わりますが、もう一度切り替えない限りマイナスのままになります
ここにフィドルがありますhttp://jsfiddle.net/ZpXrW/1/
htmlとcssはむき出しです。スクリプトを間違って実行した方法と、それを改善する方法を学びたいと思います。これを実現するためのもっと簡潔な方法があると思います。