Эта часть работает только один раз:
if (color) { color = "#" + color ; } else { color = "#0066cc" } ;
dvHead.css("background", color ) ;
Как будет следовать этой последовательности, которая недопустима после первой итерации:
ABCDEF -> #ABCDEF -> ##ABCDEF -> ###...
Я немного сжал ваш кодПосмотрите, работает ли это:
$(document).ready(function() {
$('#buttonx').click(function() {
DisplayUniDiv(40, 250, 300)
});
$('#UniDivHead').click(function() {
$('#UniDivHead, '#UniDivBody').hide();
});
});
function DisplayUniDiv(top, width, height, color) {
$('#UniDivHead').show();
if (color.index('#') == -1) {
color = '#' + color;
} else {
color = '#0066cc'
};
$('#UniDivHead').css('background', color);
$('#UniDivHead').css('top', top);
$('#UniDivHead, #UniDivBody').width(width);
$('#UniDivHead').css('margin-left', MarginLeft)
$('#UniDivHead').append('<span>Close</span>');
$('#UniDivBody').show();
$('#UniDivBody').css('background', '#CCC');
$('#UniDivBody').css('top', top + $('#UniDivHead').height());
$('#UniDivBody').css('margin-left', -(width / 2))
$('#UniDivBody').animate({height: height}, 500);
}
По сути, когда вы скрывали свои элементы, установка visibility: hidden;
большую часть времени не работает.jQuery имеет .hide()
, который устанавливает display: none;
.