将点击事件动态更改为 dojo 按钮
change a click event dynamically to dojo button
我正在尝试动态设置点击事件。在我读取一些数据并返回 true 之后,onclick 事件需要在 dijit/form/Button 上做一件事,当我返回 false 时,onclick 事件需要在同一个按钮上做另一件事。
if(m_test==true){
if(dojo.byId(tmp_tst_button)){
dojo.removeClass(tmp_tst_button,'button_fr');
dojo.addClass(tmp_tst_button,'button_fr_toggle');
var change_on_click = dojo.byId(tmp_tst_button);
dojo.connect(change_on_click,'onclick',function(){
command(tmp_binary_off);
});
}
}
else{
if(dojo.byId(tmp_tst_button)){
dojo.removeClass(tmp_tst_button,'button_fr_toggle');
dojo.addClass(tmp_tst_button,'button_fr');
var change_off_click = dojo.byId(tmp_tst_button);
dojo.connect(change_off_click,'onclick',function(){
command(tmp_binary_on);
});
}
}
并且事件已连接,但每次更改数据时都会添加一个事件 onclick,因此当我单击按钮时,我会多次调用命令,并且每次都会调用越来越多的命令。喜欢命令功能每次都附加到按钮。
您需要修改您的 dojo.connect 代码,如下所示。
var handle = dojo.connect(change_on_click,'onclick',function(){
command(tmp_binary_off);
// disconnect after use.
dojo.disconnect(handle);
});
我正在尝试动态设置点击事件。在我读取一些数据并返回 true 之后,onclick 事件需要在 dijit/form/Button 上做一件事,当我返回 false 时,onclick 事件需要在同一个按钮上做另一件事。
if(m_test==true){
if(dojo.byId(tmp_tst_button)){
dojo.removeClass(tmp_tst_button,'button_fr');
dojo.addClass(tmp_tst_button,'button_fr_toggle');
var change_on_click = dojo.byId(tmp_tst_button);
dojo.connect(change_on_click,'onclick',function(){
command(tmp_binary_off);
});
}
}
else{
if(dojo.byId(tmp_tst_button)){
dojo.removeClass(tmp_tst_button,'button_fr_toggle');
dojo.addClass(tmp_tst_button,'button_fr');
var change_off_click = dojo.byId(tmp_tst_button);
dojo.connect(change_off_click,'onclick',function(){
command(tmp_binary_on);
});
}
}
并且事件已连接,但每次更改数据时都会添加一个事件 onclick,因此当我单击按钮时,我会多次调用命令,并且每次都会调用越来越多的命令。喜欢命令功能每次都附加到按钮。
您需要修改您的 dojo.connect 代码,如下所示。
var handle = dojo.connect(change_on_click,'onclick',function(){
command(tmp_binary_off);
// disconnect after use.
dojo.disconnect(handle);
});