DOM元素的Dojo委托's的ID

Dojo delegate to DOM Element's ID

本文关键字:ID 委托 元素 Dojo DOM      更新时间:2023-09-26

我正在使用一个JSP,它根据用户的权限或其他因素动态地包括DOM元素,如按钮。

现在,在我的JS中,我使用了:dojo.connect(dojo.byId('dispatchBtn'), 'onclick', function() { //logic }

问题是,如果"dispatchBtn"不存在,因为它是根据用户的权限剥离的,那么JS无论如何都只调用"//logic"的所有内容。

我尝试将此呼叫更改为:eventView.delegate(dojo.byId('dispatchBtn'), 'onclick', function() { //logic }

但这似乎根本不起作用,即使对于确实存在的按钮也是如此。在不明确测试按钮是否存在的情况下,最好的方法是什么。我不想更改这些按钮元素上的标记,也不想更改其他类,只想通过ID引用它们。

您可以像jquery live一样在文档级别进行绑定。

require(["dojo/on", "dojo/query"], function(on){
  on(document, "#dispatchBtn:click", function(evt){
        alert("Clicked on node " + this.id);
  });
});

Fiddle:http://jsfiddle.net/theinnkeeper/NTn6g/

为什么不赞成检查按钮是否存在?这是最有意义的

var btn = dojo.byId("dispatchBtn");
 if(btn) {
    on(btn, 'onclick', function() {});
}