2012-04-19 76 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>