DOM Collapse mit Delay?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • DOM Collapse mit Delay?

    Ich habe mir ein kleines Archive mit dem collapse.js von onlinetools.org/tools/domcollapse/index.html
    zusammengebastelt.
    Klappt wunderbar.
    Doch ich möchte gerne ein delay einbauen.
    Sowie das menu von docs.mootools.net.

    Kann mir da jemand weiterhelfen, wo ich das einbauen könnte?

    Hier das javascript:

    Quellcode

    1. /*
    2. * DOMcollapse
    3. * Version 3.0
    4. * released 06.12.2005
    5. * Not for commercial reselling or use, unless consent given by the author
    6. * Check for updates on http://onlinetools.org and http://wait-till-i.com
    7. *
    8. */
    9. dc={
    10. triggerElements:'*', // elements to trigger the effect
    11. parentElementId:null, // ID of the parent element (keep null if none)
    12. uniqueCollapse:false, // is set to true only one element can be open at a time
    13. // CSS class names
    14. trigger:'trigger',
    15. triggeropen:'expanded',
    16. hideClass:'hide',
    17. showClass:'show',
    18. // pictures and text alternatives
    19. closedPic:'plus.gif',
    20. closedAlt:'expand section',
    21. openPic:'minus.gif',
    22. openAlt:'collapse section',
    23. /* Doesn't work with Safari
    24. hoverClass:'hover',
    25. */
    26. init:function(e){
    27. var temp;
    28. if(!document.getElementById || !document.createTextNode){return;}
    29. if(!dc.parentElementId){
    30. temp=document.getElementsByTagName(dc.triggerElements);
    31. } else if(document.getElementById(dc.parentElementId)){
    32. temp=document.getElementById(dc.parentElementId).getElementsByTagName(dc.triggerElements);
    33. }else{
    34. return;
    35. }
    36. dc.tempLink=document.createElement('a');
    37. dc.tempLink.setAttribute('href','#');
    38. dc.tempLink.appendChild(document.createElement('img'));
    39. for(var i=0;i<temp.length;i++){
    40. if(dc.cssjs('check',temp[i],dc.trigger) || dc.cssjs('check',temp[i],dc.triggeropen)){
    41. dc.makeTrigger(temp[i],e);
    42. }
    43. }
    44. },
    45. makeTrigger:function(o,e){
    46. var tl=dc.tempLink.cloneNode(true);
    47. var tohide=o.nextSibling;
    48. while(tohide.nodeType!=1)
    49. {
    50. tohide=tohide.nextSibling;
    51. }
    52. o.tohide=tohide;
    53. if(!dc.cssjs('check',o,dc.triggeropen)){
    54. dc.cssjs('add',tohide,dc.hideClass);
    55. tl.getElementsByTagName('img')[0].setAttribute('src',dc.closedPic);
    56. tl.getElementsByTagName('img')[0].setAttribute('alt',dc.closedAlt);
    57. o.setAttribute('title',dc.closedAlt);
    58. }else{
    59. dc.cssjs('add',tohide,dc.showClass);
    60. tl.getElementsByTagName('img')[0].setAttribute('src',dc.openPic);
    61. tl.getElementsByTagName('img')[0].setAttribute('alt',dc.openAlt);
    62. o.setAttribute('title',dc.openAlt);
    63. dc.currentOpen=o;
    64. }
    65. dc.addEvent(o,'click',dc.addCollapse,false);
    66. /* Doesn't work with Safari
    67. dc.addEvent(o,'mouseover',dc.hover,false);
    68. dc.addEvent(o,'mouseout',dc.hover,false);
    69. */
    70. o.insertBefore(tl,o.firstChild);
    71. dc.addEvent(tl,'click',dc.addCollapse,false);
    72. // Safari hacks
    73. tl.onclick=function(){return false;}
    74. o.onclick=function(){return false;}
    75. },
    76. /* Doesn't work with Safari
    77. hover:function(e){
    78. var o=dc.getTarget(e);
    79. var action=dc.cssjs('check',o,dc.hoverClass)?'remove':'add';
    80. dc.cssjs(action,o,dc.hoverClass)
    81. },
    82. */
    83. addCollapse:function(e){
    84. var action,pic;
    85. // hack to fix safari's redraw bug
    86. // as mentioned on http://en.wikipedia.org/wiki/Wikipedia:Browser_notes#Mac_OS_X
    87. if (self.screenTop && self.screenX){
    88. window.resizeTo(self.outerWidth + 1, self.outerHeight);
    89. window.resizeTo(self.outerWidth - 1, self.outerHeight);
    90. }
    91. if(dc.uniqueCollapse && dc.currentOpen){
    92. dc.currentOpen.getElementsByTagName('img')[0].setAttribute('src',dc.closedPic);
    93. dc.currentOpen.getElementsByTagName('img')[0].setAttribute('alt',dc.closedAlt);
    94. dc.currentOpen.setAttribute('title',dc.closedAlt);
    95. dc.cssjs('swap',dc.currentOpen.tohide,dc.showClass,dc.hideClass);
    96. dc.cssjs('remove',dc.currentOpen,dc.triggeropen);
    97. dc.cssjs('add',dc.currentOpen,dc.trigger);
    98. }
    99. var o=dc.getTarget(e);
    100. if(o.tohide){
    101. if(dc.cssjs('check',o.tohide,dc.hideClass)){
    102. o.getElementsByTagName('img')[0].setAttribute('src',dc.openPic);
    103. o.getElementsByTagName('img')[0].setAttribute('alt',dc.openAlt);
    104. o.setAttribute('title',dc.openAlt);
    105. dc.cssjs('swap',o.tohide,dc.hideClass,dc.showClass);
    106. dc.cssjs('add',o,dc.triggeropen);
    107. dc.cssjs('remove',o,dc.trigger);
    108. }else{
    109. o.getElementsByTagName('img')[0].setAttribute('src',dc.closedPic);
    110. o.getElementsByTagName('img')[0].setAttribute('alt',dc.closedAlt);
    111. o.setAttribute('title',dc.closedAlt);
    112. dc.cssjs('swap',o.tohide,dc.showClass,dc.hideClass);
    113. dc.cssjs('remove',o,dc.triggeropen);
    114. dc.cssjs('add',o,dc.trigger);
    115. }
    116. dc.currentOpen=o;
    117. dc.cancelClick(e);
    118. //document.getElementById('debug').innerHTML=o.tohide.className;
    119. }
    120. else{
    121. dc.cancelClick(e);
    122. }
    123. },
    124. /* helper methods */
    125. getTarget:function(e){
    126. var target = window.event ? window.event.srcElement : e ? e.target : null;
    127. if (!target){return false;}
    128. while(!target.tohide && target.nodeName.toLowerCase()!='body')
    129. {
    130. target=target.parentNode;
    131. }
    132. // if (target.nodeName.toLowerCase() != 'a'){target = target.parentNode;} Safari fix not needed here
    133. return target;
    134. },
    135. cancelClick:function(e){
    136. if (window.event){
    137. window.event.cancelBubble = true;
    138. window.event.returnValue = false;
    139. return;
    140. }
    141. if (e){
    142. e.stopPropagation();
    143. e.preventDefault();
    144. }
    145. },
    146. addEvent: function(elm, evType, fn, useCapture){
    147. if (elm.addEventListener)
    148. {
    149. elm.addEventListener(evType, fn, useCapture);
    150. return true;
    151. } else if (elm.attachEvent) {
    152. var r = elm.attachEvent('on' + evType, fn);
    153. return r;
    154. } else {
    155. elm['on' + evType] = fn;
    156. }
    157. },
    158. cssjs:function(a,o,c1,c2){
    159. switch (a){
    160. case 'swap':
    161. o.className=!dc.cssjs('check',o,c1)?o.className.replace(c2,c1):o.className.replace(c1,c2);
    162. break;
    163. case 'add':
    164. if(!dc.cssjs('check',o,c1)){o.className+=o.className?' '+c1:c1;}
    165. break;
    166. case 'remove':
    167. var rep=o.className.match(' '+c1)?' '+c1:c1;
    168. o.className=o.className.replace(rep,'');
    169. break;
    170. case 'check':
    171. return new RegExp("(^|\\s)" + c1 + "(\\s|$)").test(o.className)
    172. break;
    173. }
    174. }
    175. }
    176. dc.addEvent(window, 'load', dc.init, false);
    Alles anzeigen