Nu er jeg - i modsætning til, hvad mange tror - ikke religiøs modstander af jQuery. Det giver dog rigtig god mening at lære JS godt at kende, så man kan bruge jQuery i sin kode, der hvor det giver bedst mening =)
Et bud kunne være noget i denne stil:
<!DOCTYPE html>
<html>
<head>
<title>Untitled Document</title>
<style type="text/css">
body {
margin: 0;
padding: 0;
font: 12px "Segoe UI", Tahoma, sans-serif;
}
ul {
width: 100px;
margin: 0;
padding: 0;
list-style: none;
border: 1px solid red;
background: yellow;
cursor: default;
}
li ul {
margin-left: 20px;
}
li {
margin: 4px;
background: #ededed;
}
</style>
<script type="text/javascript">
var active = null;
function closestUL(elmUL, elm) {
if (elm.nodeName.toLowerCase()==="ul") return false;
for (var elmPar; elm&&elm!==elmUL; elm=elmPar) {
elmPar = elm.parentNode;
if (elmPar.nodeName.toLowerCase()==="ul") {
return {li:elm, ul:elmPar};
}
}
}
function mOver(elmUL, evt, out) {
var oSrc = closestUL(elmUL, evt.target||evt.srcElement);
if (!oSrc) return;
if (active) {
active.li.style.background = "";
active.ul.style.borderColor = "";
}
if (out) return;
active = {li:oSrc.li, ul:oSrc.ul};
active.li.style.background = "green";
active.ul.style.borderColor = "blue";
}
</script>
</head>
<body>
<ul onmouseover="mOver(this, event)" onmouseout="mOver(this, event, true)">
<li>Emne #1.0.0</li>
<li>Emne #2.0.0</li>
<li>Emne #3.0.0
<ul>
<li>Emne <b>#3.1.0</b></li>
<li>Emne <b>#3.2.0</b></li>
<li>Emne <b>#3.3.0</b>
<ul>
<li>Emne <i><b>#3.3.1</b></i></li>
<li>Emne <i><b>#3.3.2</b></i></li>
<li>Emne <i><b>#3.3.3</b></i></li>
<li>Emne <i><b>#3.3.4</b></i></li>
</ul></li>
<li>Emne <b>#3.4.0</b></li>
<li>Emne <b>#3.5.0</b></li>
</ul></li>
<li>Emne #4.0.0</li>
<li>Emne #5.0.0</li>
<li>Emne #6.0.0</li>
</ul>
</body>
</html>
- og du kan naturligvis sætte
className på UL-elementet i stedet for at sætte elementernes baggrunds- og kantfarve.
Under alle omstændigheder, har du begge elementer til rådighed, dersom du ønsker at gøre andet ved dem =)