使用 Javascript 函数创建 DOJO 按钮导致创建的按钮发生冲突
Creating DOJO buttons with Javascript function causing conflicts in buttons created
对于任何英语错误,我深表歉意,我是巴西人。
我有一个带有 DOJO 库的网站,我在很多地方都用到了它。
我在 javascript 中创建按钮时遇到一些困难。
我写了一个函数来创建按钮,它正在运行,正在创建按钮。
但是,当创建一个新按钮时,之前的按钮丢失了事件"onclick"。
可以在这里查看:http://jsbin.com/xuzevi/edit?html,js,output
为了创建按钮,我使用了以下代码:
require([ 'dojo/dom', 'dojo/parser', 'dijit/form/Button', 'dojo/domReady!' ],
function( dom, parser, Button)
{
var div_Compra = document.getElementById(p_Div);
if( ! div_Compra ) { console.log('ERRO - div_Compra: '+p_Div); return false; }
var botao = new Button({ label: '' });
if( ! botao ) { console.log('ERRO - botao'); return false; }
botao.startup();
botao.set('iconClass', 'dijitEditorIcon dijitEditorIconSelectAll');
botao.set('showLabel', false);
botao.placeAt(div_Compra);
botao.on('click', function() { Mensagem(p_Indice); });
}
);
谢谢。
问题不在上述代码中。主要问题是您在 CPR_Compra.Cadastro
方法中使用了 innerHTML
。你不可能认为,dojo dijit 只是 HTML 个标签,它们是 DOM 个对象、节点等等。当您更新 div_Cadastro.innerHTML
时,它有点破坏了 wigit,但保留了 HTML 标签,因此 onclick 事件停止工作。
而不是使用 innerHTML
使用 appendChild
,这样 dom 节点就不会被破坏。下面是带有工作实现的 JSBin。
来自 https://davidwalsh.name/dojo-widget
- 要以编程方式创建小部件,您需要创建 DOM 个节点作为未来小部件的占位符
并阅读:https://davidwalsh.name/dojo-behavior
使用 dojo.behavior
创建小部件
- 创建小部件是使用 dojo.behavior:
的更好机会
对于像我一样来到这里的其他人,还有一些链接:
HTML DOM appendChild() 方法
Node.appendChild()
方法将一个节点添加到指定父节点的子节点列表的末尾。
对于任何英语错误,我深表歉意,我是巴西人。
我有一个带有 DOJO 库的网站,我在很多地方都用到了它。
我在 javascript 中创建按钮时遇到一些困难。
我写了一个函数来创建按钮,它正在运行,正在创建按钮。
但是,当创建一个新按钮时,之前的按钮丢失了事件"onclick"。
可以在这里查看:http://jsbin.com/xuzevi/edit?html,js,output
为了创建按钮,我使用了以下代码:
require([ 'dojo/dom', 'dojo/parser', 'dijit/form/Button', 'dojo/domReady!' ],
function( dom, parser, Button)
{
var div_Compra = document.getElementById(p_Div);
if( ! div_Compra ) { console.log('ERRO - div_Compra: '+p_Div); return false; }
var botao = new Button({ label: '' });
if( ! botao ) { console.log('ERRO - botao'); return false; }
botao.startup();
botao.set('iconClass', 'dijitEditorIcon dijitEditorIconSelectAll');
botao.set('showLabel', false);
botao.placeAt(div_Compra);
botao.on('click', function() { Mensagem(p_Indice); });
}
);
谢谢。
问题不在上述代码中。主要问题是您在 CPR_Compra.Cadastro
方法中使用了 innerHTML
。你不可能认为,dojo dijit 只是 HTML 个标签,它们是 DOM 个对象、节点等等。当您更新 div_Cadastro.innerHTML
时,它有点破坏了 wigit,但保留了 HTML 标签,因此 onclick 事件停止工作。
而不是使用 innerHTML
使用 appendChild
,这样 dom 节点就不会被破坏。下面是带有工作实现的 JSBin。
来自 https://davidwalsh.name/dojo-widget
- 要以编程方式创建小部件,您需要创建 DOM 个节点作为未来小部件的占位符
并阅读:https://davidwalsh.name/dojo-behavior
使用 dojo.behavior
创建小部件- 创建小部件是使用 dojo.behavior: 的更好机会
对于像我一样来到这里的其他人,还有一些链接:
HTML DOM appendChild() 方法
Node.appendChild()
方法将一个节点添加到指定父节点的子节点列表的末尾。