2012-04-19 3 views
1

В jquery вы можете вызвать событие mouseover с помощью $ (element) .mouseover().Событие триггера с помощью dojo?

В dojo после использования функции connect я не уверен, как вызвать событие. Когда я использовал соединение с кликом, я мог бы использовать element.click() для запуска клика, но для других событий, таких как mouseover, вызов метода element.mouseover() не работает. Итак, как вы запускаете события, такие как mouseover, используя Dojo? (Я знаю, что есть простые JS способов сделать это как fireEvent, но это грязно и не кросс доказательства браузера)

Вот коду

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​ 

код на jsFiddle: http://jsfiddle.net/mHKDt/28/

ответ

1

Это должно сделать это для додзё 1.7 примера. Вам не нужна таблица стилей или класс клао на теге тела. Они там, как часть моего шаблона с нуля, я использую материал try.

<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

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> 
Смежные вопросы