Dojo连接问题

时间:2011-05-23 23:30:51

标签: events dojo

你对Dojo很新,基本上我试图将一个事件附加到'每个'类然后在鼠标悬停上我想用类名显示壁橱div(更改显示到块)。但经过多次尝试后,我无法这样做。

这是html:

<div class="navElement"> 
                    <a href="" class="navSectionTitle">Sound &#38; Vision &#43;</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> &#43;</li>

                        </ul>
                    </div>  
                </div>

                <div class="navElement"> 
                    <a href="" class="navSectionTitle">Computers &#38; Software  &#43;</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> &#43;</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);
            });
        });

不确定这是否是最佳做法,但感谢任何帮助,非常感谢。

2 个答案:

答案 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 - 元素调用事件