Changeset 3574 for extensions/rv_menutree/branches/2.0-radu/rvtree.js
- Timestamp:
- Jul 13, 2009, 8:45:36 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/rv_menutree/branches/2.0-radu/rvtree.js
r3572 r3574 2 2 Based on Matt Kruse <matt@mattkruse.com> http://www.mattkruse.com/ */ 3 3 var XElement = { 4 5 6 7 8 9 10 11 12 4 hasClassName: function(element, className) { 5 if (!element) return false; 6 var elementClassName = element.className; 7 if (elementClassName.length == 0) return false; 8 if (elementClassName == className || 9 elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) 10 return true; 11 return false; 12 }, 13 13 14 15 16 17 18 19 20 21 22 14 addClassName: function(element, className) { 15 if (!element) return; 16 var classNames = element.className.split(/\s+/); 17 for (var i=0; i<classNames.length; i++) 18 if (className==classNames[i]) return; 19 classNames.splice(0,0,className); 20 element.className = classNames.join(' '); 21 return element; 22 }, 23 23 24 25 26 27 28 29 30 31 32 33 34 35 24 toggleClassName: function(element, className) { 25 if (!element) return; 26 var classNames = element.className.split(/\s+/); 27 for (var i=0; i<classNames.length; i++) 28 if (classNames[i]==className) break; 29 if (i==classNames.length) 30 classNames.splice(0,0,className); 31 else 32 classNames.splice(i, 1); 33 element.className = classNames.join(' '); 34 return element; 35 } 36 36 }; 37 37 … … 49 49 { 50 50 if (!document.createElement) return; // Without createElement, we can't do anything 51 if (window.attachEvent && !window.opera) 52 { 53 if ( new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})").exec( navigator.userAgent ) != null ) 54 RVTree.options.IEVersion = parseFloat( RegExp.$1 ); 55 } 51 56 RVTree._processList(root, true); 52 57 }, … … 58 63 for (var i=0; i<ul.childNodes.length; i++) 59 64 { //Iterate LIs 60 61 62 65 var item = ul.childNodes[i]; 66 if (item.nodeName != "LI") 67 continue; 63 68 64 65 66 67 68 69 70 71 72 73 69 // Iterate things in this LI 70 var subLists = false; 71 for (var sitemi=0;sitemi<item.childNodes.length;sitemi++) 72 { 73 var sitem = item.childNodes[sitemi]; 74 if (sitem.nodeName=="UL") 75 { 76 subLists = true; 77 RVTree._processList(sitem, false); 78 } 74 79 } 75 80 … … 78 83 s.className = RVTree.options.nodeLinkClass; 79 84 if (subLists) 80 85 { 81 86 // This LI has UL's in it, so it's a +/- node 82 87 if ( !XElement.hasClassName(item, RVTree.options.nodeOpenClass) ) … … 85 90 // If it's just text, make the text work as the link also 86 91 if (item.firstChild.nodeName=="#text") 87 92 { 88 93 t = t+item.firstChild.nodeValue; 89 94 item.removeChild(item.firstChild); 90 95 } 91 96 s.onclick = function () 92 93 94 97 { 98 XElement.toggleClassName( this.parentNode, RVTree.options.nodeOpenClass ); 99 XElement.toggleClassName( this.parentNode, RVTree.options.nodeClosedClass ); 95 100 return false; 96 101 } 97 102 } 98 103 else 99 100 101 102 103 104 105 106 107 108 109 110 104 {// No sublists 105 if ( XElement.hasClassName(item, RVTree.options.nodeClosedClass) ) 106 { 107 s.onclick = function() 108 { 109 var nodes = this.parentNode.getElementsByTagName("A"); 110 if (nodes.length) 111 document.location = nodes[0].href; 112 } 113 } 114 else 115 XElement.addClassName(item, RVTree.options.nodeBulletClass); 111 116 } 112 117 113 118 item.style.listStyleType='none'; 114 if (isRoot && /*IE*/ (window.attachEvent && !window.opera))115 item.style.marginLeft="-16px"; // thats IE6 what about IE7 ? 119 if (isRoot && RVTree.options.IEVersion && RVTree.options.IEVersion < 8) 120 item.style.marginLeft="-16px"; // thats IE6,IE7 ; IE8 seems more compliant 116 121 if (s) 117 122 {
Note: See TracChangeset
for help on using the changeset viewer.