функции slideDown и slideUp разворачивают и сворачивают div с классом "hide" при нажатии на href с классом "details". Сам toggle не вынесен в отдельную функцию, а идет прямо после domReady. Коряво, но уж как есть пока. Не уверен поможет ли код, так как согласно нему все работает отлично, кроме наползания на нижележащий текст, а тут дело видимо в CSS (стили для классов "begin", "hide", "details" вобще не прописывались, кроме .hide {display:none}, потом принудительно прописывались одинаковые z-index и были всякие эксперименты с position) или дело может быть в дочерних тегах дива hide (не уверен как они могут повлиять на стиль родителя), тогда смотреть надо HTML.
function slideDown(elem){
var pos=0, q, tim;
var h = parseInt(fullHeight(elem));
//var next=next;
elem.style.height="0px";
show(elem);
tim=setInterval(function(){
pos+=5;
if (pos>=100){
clearInterval(tim);
}
elem.style.height=((pos/100)*h)+"px";
}, 1);
}
function slideUp(elem){
var pos=0, tim;
var h = parseInt(fullHeight(elem));
tim=setInterval(function(){
pos+=10;
if (pos>100){
clearInterval(tim);
hide(elem);
elem.style.height=h+"px";
}
elem.style.height=(h-(pos/100)*h)+"px";
}, 20);
}
domReady(function(){
var begin= hasClass("begin");
var more=hasClass("hide");
var href = hasClass("details");
for (var j=0; j<href.length; j++){(function(){
var s=j;
var hrefText=href[0].innerHTML;
addEvent ( href[s], "click", function() {
var op = attr(more[s], "open");
if (op=="yes"){
slideUp(more[s]);
attr (more[s], "open", "");
href[s].innerHTML=hrefText;
href[s].className="more";
}
if(op==""){
slideDown(more[s]);
attr (more[s], "open", "yes");
if (language=="russian"){
href[s].innerHTML="свернуть";
href[s].className="more_back";
}
else {href[s].innerHTML="minimize";}
href[s].className="more_back";
}
return false;
});
})();
}
})
|