你对Dojo很新,基本上我试图将一个事件附加到'每个'类然后在鼠标悬停上我想用类名显示壁橱div(更改显示到块)。但经过多次尝试后,我无法这样做。
这是html:
<div class="navElement">
<a href="" class="navSectionTitle">Sound & Vision +</a>
<div class="subMenuHolder">
<ul>
<li><a href="#">Televisions</a>,</li>
<li><a href="#">LCD TVs</a>,</li>
<li><a href="#">Plasma TVs</a>,</li>
<li><a href="#">3D TVs</a>,</li>
<li><a href="#">MP3 Players</a>,</li>
<li><a href="#">Hi Fi</a>,</li>
<li><a href="#">MP3 Docks</a>,</li>
<li><a href="">More</a> +</li>
</ul>
</div>
</div>
<div class="navElement">
<a href="" class="navSectionTitle">Computers & Software +</a>
<div class="subMenuHolder">
<ul>
<li><a href="#">Laptops</a>,</li>
<li><a href="#">Desktops Computers</a>,</li>
<li><a href="#">Software</a>,</li>
<li><a href="#">Printers</a>,</li>
<li><a href="#">External Hard Drives</a>,</li>
<li><a href="#">Internal Hard drives</a>,</li>
<li><a href="">More</a> +</li>
</ul>
</div>
</div>
我试图使用的道场如下:
dojo.require("dojo.NodeList-traverse");
dojo.query(".navSectionTitle").forEach(function(node, index, nodelist){
dojo.connect(node , "onmouseover", function(evt){
var here = dojo.query(node).closest(".subMenuHolder");
here.style.display = 'block';
console.log(here);
});
});
不确定这是否是最佳做法,但感谢任何帮助,非常感谢。
答案 0 :(得分:2)
Closest将返回查询中节点的父节点。 所以请转到下面的方法,如下所示。 确保将所有事件附加代码包装在dojo.addOnLoad块
中 dojo.query(".navSectionTitle").forEach(function(node, index, nodelist){
dojo.connect(node , "onmouseover", function(evt){
//this is the menu you want to show
console.log(dojo.query(node).next('.subMenuHolder')[0])
});
});
希望有所帮助
答案 1 :(得分:1)
您连接到.navSectionTitle类,但
dojo.query('.navSectionTitle') = one 'a' element
您必须连接到
dojo.query('.subMenuHolder a').connect("onmouseover", function(evt){//your code});
如果你想要li元素连接类型.subMenuHolder li evt.srcElement - 元素调用事件