Dojo是否具有与jQuery.trigger()相同的功能?

Nik*_*rez 11 jquery events dojo

在jQuery中,您可以这样做:

$('#myElement').trigger('change');
Run Code Online (Sandbox Code Playgroud)

我如何在Dojo中做到这一点?

Ste*_*sky 37

dojo on.emit方法(1.7+)可用于触发dom节点上的事件.从文档页面:

require(["dojo/on"], function(on){
    // register event handler
    on(target, "mouseup", function(e){
        // handle event
    });

    // Send event
    on.emit(target, "mouseup", {
        bubbles: true,
        cancelable: true
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 应该注意的是,此功能仅在1.7版本之后可用. (3认同)
  • 好,找出问题所在。“目标”必须是DOM节点本身,而不是dijit实例。谢谢! (2认同)

Gre*_*Dev 6

我不认为Dojo具有类似的功能,至少在我知道/可以找到的情况下并不如此.但您可以使用以下代码来复制此功能:

dojo.addOnLoad(function() {

    var button = dojo.byId("myButton");
    dojo.connect(button, "onclick", function() { alert("Clicked!"); });

    // IE does things differently
    if (dojo.isIE)
    {
        button.fireEvent("onclick");
    }
    else
    { // Not IE
        var event = document.createEvent("HTMLEvents");
        event.initEvent("click", false, true);
        console.debug(event);
        button.dispatchEvent(event);
    }
});
Run Code Online (Sandbox Code Playgroud)

更确切一点,但是你可以使用它创建自己的dojo版本的trigger().

试试看

  • 是的,道场是荒谬和困难的.我同意. (14认同)
  • 当然,但每个人都擅长它自己的东西:) (2认同)