1

在 jquery 中,您可以使用 $(element).mouseover() 触发鼠标悬停事件。

在dojo中使用connect功能后,我不太确定如何触发事件。当我使用单击连接时,我可以使用 element.click() 来触发单击,但对于鼠标悬停等其他事件,调用 element.mouseover() 不起作用。那么如何使用 Dojo 触发鼠标悬停等事件呢?(我知道有像fireEvent这样的普通js方法,但它很乱而且不能跨浏览器证明)

这是一些代码

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/

4

3 回答 3

2

对于 dojo 1.7 示例,应该这样做。您不需要 body 标记上的样式表或 claro 类。它们是我的便签本模板的一部分,我使用了 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>
于 2012-04-19T13:23:56.620 回答
0

如果你不介意使用纯 javascript,让我们看看这篇文章Simulate Mouse Over in Vimperator plugin

我发现这与 dojo 配合得很好。

这是我更新的你的 jsFiddle。

于 2012-04-19T09:52:08.147 回答
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>
于 2012-04-20T17:42:09.250 回答