2012-04-19 77 views
1

在jquery中,您可以使用$(element).mouseover()触发mouseover事件。使用dojo触发mouseover事件?

在使用connect函数之后的dojo中,我不太确定如何触发事件。当我用点击连接时,我可以使用element.click()触发点击,但对于其他类似mouseover的事件,调用element.mouseover()不起作用。那么如何使用Dojo触发像mouseover这样的事件? (我知道有这样做就像fireEvent的纯JS的方式,但它的混乱和不跨浏览器的证明)

下面是一些代码上的jsfiddle

var myButton = dojo.byId("myButton"), 
    myDiv = dojo.byId("myDiv"); 

dojo.connect(myButton, "mouseover", function(evt){ 
    dojo.style(myDiv, "backgroundColor", "blue"); 
}); 

dojo.connect(myButton, "click", function(evt){ 
    dojo.style(myDiv, "backgroundColor", "yellow"); 
}); 

myButton.click();//works 

myButton.mouseover();//doesn't work​ 

代码:http://jsfiddle.net/mHKDt/28/

回答

1

这应该道场1.7例子做到这一点。你不需要body标签上的样式表或claro类。他们在那里作为我使用try stuff的我的便笺簿模板的一部分。

<html> 
    <head> 
      <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dijit/themes/claro/claro.css" media="screen"> 
      <!-- load dojo and provide config via data attribute --> 
      <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojo/dojo.js" 
        data-dojo-config="async: true"></script> 
    </head> 
    <script type="text/javascript"> 
    <!-- 
    require(["dojo/mouse", 
      "dojo/dom", 
      "dojo/on", 
      "dojo/domReady!"],function(mouse,dom,on){ 
        var node = dom.byId("myImg") 
        on(node,mouse.enter,function(){ 
         console.info("In " + node.title); 
        }); 

        on(node,mouse.leave,function(){ 
         console.info("Out " + node.title); 
        }); 
    });   
    //--> 
    </script> 

    <body class="claro"> 
     <img id="myImg" title="yay google" src="http://www.google.com/ig/images/jfk/google_color.png"/> 
    </body> 
</html> 
+0

我不是在寻找添加eventlistener的方法,我想在代码中触发像mouseover这样的事件。请阅读这个问题。 – Derek 2012-04-19 22:03:30

0

尝试发布订阅。

<script type="text/javascript"> 
<!-- 
require(["dojo", 
     "dojo/topic", 
     "dojo/mouse", 
     "dojo/dom", 
     "dojo/on", 
     "dojo/domReady!"],function(dojo,topic,mouse,dom,on){ 
     var node = dojo.byId("myImg"); 
     topic.subscribe("mouseover",function(msg){ 
      console.info("Called"); 
      dojo.style("myDiv", "backgroundColor", msg); 
     }); 

     on(node,mouse.enter,function(){ 
      topic.publish("mouseover","green"); 
     }); 

     on(node,mouse.leave,function(){ 
      topic.publish("mouseover","blue"); 
     }); 
     topic.publish("mouseover","black"); 
});   
//--> 
</script>