【问题标题】:Dojo connect problemDojo 连接问题
【发布时间】:2011-05-23 23:30:51
【问题描述】:

嗨,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);
            });
        });

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

【问题讨论】:

    标签: events dojo


    【解决方案1】:

    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])
            });
        });
    

    希望对你有帮助

    【讨论】:

    • 你先生是一个非常好的人,感谢您的帮助,请您在 11:30 之后真的停止工作 ;-)
    【解决方案2】:

    你连接到类 .navSectionTitle,但是

    dojo.query('.navSectionTitle') = one 'a' element
    

    你必须连接到

    dojo.query('.subMenuHolder a').connect("onmouseover", function(evt){//your code});
    

    如果你想 li 元素连接类型 .subMenuHolder li evt.srcElement - 调用事件的元素

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      • 2013-04-02
      • 2011-08-20
      • 2013-08-22
      • 1970-01-01
      相关资源
      最近更新 更多