Events 为「;更改“;事件;选择";在ToolTipDialog中执行时间
为什么选择“更改”事件执行时间将随着按钮的单击次数增加 HTML:Events 为「;更改“;事件;选择";在ToolTipDialog中执行时间,events,select,dojo,Events,Select,Dojo,为什么选择“更改”事件执行时间将随着按钮的单击次数增加 HTML: <button id="btn">click me</button> 点击我 JS require(["dojo/_base/declare", "dojo/dom", "dojo/on", "dojo/_base/lang", "dijit/registry", "dijit/TooltipDialog", "dijit/popup","dijit/form/Select", "dojo/_base
<button id="btn">click me</button>
点击我
JS
require(["dojo/_base/declare", "dojo/dom", "dojo/on", "dojo/_base/lang", "dijit/registry", "dijit/TooltipDialog", "dijit/popup","dijit/form/Select", "dojo/_base/array", "dojo/domReady!"],
function(declare, dom, on, lang, registry, TooltipDialog, popup,Select, Array) {
var InfoWindow= declare( // 类名省略
TooltipDialog,
{
constructor: function (parameters) {
console.log("hello");
},
test:function(){
var tNode=dom.byId("btn");
var myTooltipDialog = new TooltipDialog({
id: 'myTooltipDialog',
style: "width: 300px;",
content: '<div id="tpDialog006" class="pDlg"></div><div id="selectMenu" class="right"><select name="select1" id="sel006" data-dojo-type="dijit/form/Select"> <option value="037" selected="selected">1</option><option class="left" value="005" >2</option><option class="left" value="007" >3</option><option value="006">4</option></select></div>',
onMouseLeave: function(e){
if(registry.getEnclosingWidget(e.target).name=="select1")
return;
popup.close(myTooltipDialog);
},
onOpen:lang.hitch(this, function(e) {
})
});
var sHu = registry.byId("sel006" );
sHu.on("change", function (e) {
alert( "value is" +sHu.value);
});
on(tNode,"click",function(){
popup.open({
popup: myTooltipDialog,
around: dom.byId('btn')
});
})
this.m1="t1";
}
}
);
var infoWindow = new InfoWindow({
});
infoWindow.test();
});
require([“dojo/\u base/declare”、“dojo/dom”、“dojo/on”、“dojo/\u base/lang”、“dijit/registry”、“dijit/TooltipDialog”、“dijit/popup”、“dijit/form/Select”、“dojo/\u base/array”、“dojo/domReady!”),
函数(声明、dom、on、lang、注册表、工具提示对话框、弹出窗口、选择、数组){
var InfoWindow=declare(//类名省略
工具提示对话框,
{
构造函数:函数(参数){
console.log(“你好”);
},
测试:函数(){
var tNode=dom.byId(“btn”);
var myTooltipDialog=新建TooltipDialog({
id:“myTooltipDialog”,
样式:“宽度:300px;”,
内容:“1234”,
onMouseLeave:函数(e){
if(registry.getEnclosuringWidget(e.target).name==“select1”)
返回;
弹出.关闭(myTooltipDialog);
},
onOpen:lang.hitch(这个函数是e){
})
});
var sHu=registry.byId(“sel006”);
关于(“改变”,职能(e){
警报(“值为”+sHu.value);
});
打开(tNode,“单击”,函数(){
打开({
弹出:myTooltipDialog,
around:dom.byId('btn')
});
})
这是m1=“t1”;
}
}
);
var infoWindow=新infoWindow({
});
infoWindow.test();
});
代码位于以下链接:
工具提示对话框显示可能有问题,但不会影响要复制的问题。复制单击是正常的,因为: 在按钮中,单击(上方): 在每次单击按钮时,您都会打开弹出窗口,因此,工具提示的打开功能正在执行(
onOpen
事件已触发),这意味着更改事件将再次附加到您的sel006
选择
输入
我建议您不要在工具提示onOpen
事件中指定select change事件,而只是在工具提示初始化后声明它
因此,代码变成:
var myTooltipDialog = new TooltipDialog({
id: 'myTooltipDialog',
style: "width: 300px;",
content: '<div id="tpDialog006" class="pDlg"></div><div id="selectMenu" class="right"><select name="select1" id="sel006" data-dojo-type="dijit/form/Select"> <option value="037" selected="selected">1</option><option class="left" value="005" >2</option><option class="left" value="007" >3</option><option value="006">4</option></select></div>',
onMouseLeave: function(e){
if(registry.getEnclosingWidget(e.target).name=="select1")
return;
popup.close(myTooltipDialog);
},
onOpen:lang.hitch(this, function(e) {
// remove event from here
})
});
var sHu = registry.byId("sel006" );
sHu.on("change", function (e) {
alert( "value is" +sHu.value);
});
var myTooltipDialog=新建TooltipDialog({
id:“myTooltipDialog”,
样式:“宽度:300px;”,
内容:“1234”,
onMouseLeave:函数(e){
if(registry.getEnclosuringWidget(e.target).name==“select1”)
返回;
弹出.关闭(myTooltipDialog);
},
onOpen:lang.hitch(这个函数是e){
//从此处删除事件
})
});
var sHu=registry.byId(“sel006”);
关于(“改变”,职能(e){
警报(“值为”+sHu.value);
});
下面是一个小提琴示例:这是正常的,因为: 在按钮中,单击(上方): 在每次单击按钮时,您都会打开弹出窗口,因此,工具提示的打开功能正在执行(
onOpen
事件已触发),这意味着更改事件将再次附加到您的sel006
选择
输入
我建议您不要在工具提示onOpen
事件中指定select change事件,而只是在工具提示初始化后声明它
因此,代码变成:
var myTooltipDialog = new TooltipDialog({
id: 'myTooltipDialog',
style: "width: 300px;",
content: '<div id="tpDialog006" class="pDlg"></div><div id="selectMenu" class="right"><select name="select1" id="sel006" data-dojo-type="dijit/form/Select"> <option value="037" selected="selected">1</option><option class="left" value="005" >2</option><option class="left" value="007" >3</option><option value="006">4</option></select></div>',
onMouseLeave: function(e){
if(registry.getEnclosingWidget(e.target).name=="select1")
return;
popup.close(myTooltipDialog);
},
onOpen:lang.hitch(this, function(e) {
// remove event from here
})
});
var sHu = registry.byId("sel006" );
sHu.on("change", function (e) {
alert( "value is" +sHu.value);
});
var myTooltipDialog=新建TooltipDialog({
id:“myTooltipDialog”,
样式:“宽度:300px;”,
内容:“1234”,
onMouseLeave:函数(e){
if(registry.getEnclosuringWidget(e.target).name==“select1”)
返回;
弹出.关闭(myTooltipDialog);
},
onOpen:lang.hitch(这个函数是e){
//从此处删除事件
})
});
var sHu=registry.byId(“sel006”);
关于(“改变”,职能(e){
警报(“值为”+sHu.value);
});
以小提琴为例: