1

jquery では、$(element).mouseover() を使用して mouseover イベントをトリガーできます。

接続機能を使用した後の dojo では、イベントをトリガーする方法がよくわかりません。クリックで接続を使用した場合、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

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 に答える
0

純粋な JavaScript を使用することを気にしない場合は、この投稿を参照してくださいVimperator プラグインでマウス オーバーをシミュレートする

私はそれが道場でうまく機能していることを発見しました。

これが私が更新したあなたのjsFiddleです。

于 2012-04-19T09:52:08.147 に答える