dojo 的 event.preventDefault() 在 dojo 1.8 版本上不工作
dojo's event.preventDefault() not working on dojo 1.8 version
我正在将 DOJO 从 1.4 升级到 1.8 版本。现在,我定义了 dojo acccordian widget.I 需要在 onclick 事件中停止扩展 Accordian 小部件。
当我们使用 dojo 版本 1.4 时它起作用了,我们使用以下代码片段来停止 onclick 事件。
模板如下:
<div data-dojo-type="dijit.layout.AccordionContainer" style="height: 300px;" onclick="onClickHandler">
J 如下所示:
function onClickHandler(evt){
dojo.stopEvent(evt);
}
在 1.8 Dojo 版本上遇到以下问题:
根据 dojo 官方网站 https://dojotoolkit.org/reference-guide/1.8/dojo/stopEvent.html# ,他们报告 dojo.stopEvent() deplrecated.we 需要使用 evt.preventDefault() 和 evt.stopPropagation( ) 反而。
当我尝试如下所示的 onclickhandler 时,它不会停止 onclick 事件。
function onClickHandler(evt){
//dojo.stopEvent(evt);
evt.preventDefault(); //Instead of the stopEvent
evt.stopPropagation();
}
我无法弄清楚问题所在。 Chrome 和 Firefox 都不会引发任何错误或异常,因此据我所知,没有语法错误。
我尝试 'return false' 而不是上面提到的 preventDefault 和 stopPropagation 作为 well.even 尽管它没有停止手风琴面板的 onclick 事件。
请帮我解决一下
提前致谢
首先,将 id
添加到您的 accordionContainer
并移除 onclickHandler us on event。
<div id="accordionContainer_1" data-dojo-type="dijit.layout.AccordionContainer" style="height: 300px;">
使用以下代码后:
require(["dijit/registry","dojo/ready","dojo/_base/array"],
function(registry,ready,array){
ready(function(){
var accordionContainer = registry.byId("accordionContainer_1");
array.forEach(accordionContainer.getChildren(), function(childPane) {
// set click on title event as empty function
childPane._buttonWidget._onTitleClick = function(){};
// set also keyboard keyDwon(up) on title event as empty function
childPane._buttonWidget._onKeyPress = function(){};
});
}
}
});
所以现在当页面加载时,accordionContainer_1
AcordionContainer
中的 accordionPane
被 slieUp(Down) 禁用。
这是通过为 _onTitleClick 和 _onKeyPress 分配一个空函数来完成的(pane->_buttonWidget->_onTitleClick 函数 ...)
如果您想按需启用或禁用事件,您可以关注
My sample in GitHUB , 运行 Web 服务器中的文件。
我正在将 DOJO 从 1.4 升级到 1.8 版本。现在,我定义了 dojo acccordian widget.I 需要在 onclick 事件中停止扩展 Accordian 小部件。
当我们使用 dojo 版本 1.4 时它起作用了,我们使用以下代码片段来停止 onclick 事件。
模板如下:
<div data-dojo-type="dijit.layout.AccordionContainer" style="height: 300px;" onclick="onClickHandler">
J 如下所示:
function onClickHandler(evt){
dojo.stopEvent(evt);
}
在 1.8 Dojo 版本上遇到以下问题:
根据 dojo 官方网站 https://dojotoolkit.org/reference-guide/1.8/dojo/stopEvent.html# ,他们报告 dojo.stopEvent() deplrecated.we 需要使用 evt.preventDefault() 和 evt.stopPropagation( ) 反而。
当我尝试如下所示的 onclickhandler 时,它不会停止 onclick 事件。
function onClickHandler(evt){
//dojo.stopEvent(evt);
evt.preventDefault(); //Instead of the stopEvent
evt.stopPropagation();
}
我无法弄清楚问题所在。 Chrome 和 Firefox 都不会引发任何错误或异常,因此据我所知,没有语法错误。
我尝试 'return false' 而不是上面提到的 preventDefault 和 stopPropagation 作为 well.even 尽管它没有停止手风琴面板的 onclick 事件。
请帮我解决一下
提前致谢
首先,将 id
添加到您的 accordionContainer
并移除 onclickHandler us on event。
<div id="accordionContainer_1" data-dojo-type="dijit.layout.AccordionContainer" style="height: 300px;">
使用以下代码后:
require(["dijit/registry","dojo/ready","dojo/_base/array"],
function(registry,ready,array){
ready(function(){
var accordionContainer = registry.byId("accordionContainer_1");
array.forEach(accordionContainer.getChildren(), function(childPane) {
// set click on title event as empty function
childPane._buttonWidget._onTitleClick = function(){};
// set also keyboard keyDwon(up) on title event as empty function
childPane._buttonWidget._onKeyPress = function(){};
});
}
}
});
所以现在当页面加载时,accordionContainer_1
AcordionContainer
中的 accordionPane
被 slieUp(Down) 禁用。
这是通过为 _onTitleClick 和 _onKeyPress 分配一个空函数来完成的(pane->_buttonWidget->_onTitleClick 函数 ...)
如果您想按需启用或禁用事件,您可以关注 My sample in GitHUB , 运行 Web 服务器中的文件。