我正在将DOJO从1.4升级到1.8版本。现在,我定义了dojo acccordian小部件。我需要在onclick事件中停止扩展Accordian小部件。
当我们使用dojo 1.4版本时,我们使用以下代码段来停止onclick事件。
如下模板:
<div data-dojo-type="dijit.layout.AccordionContainer" style="height: 300px;" onclick="onClickHandler">
Js喜欢以下:
function onClickHandler(evt){
dojo.stopEvent(evt);
}
在1.8 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都不会触发任何错误或异常,因此据我所知,没有语法错误。
我试图'返回false'而不是上面提到的preventDefault&amp; stopPropagation也是如此,尽管它没有停止手风琴窗格的onclick事件。
请帮我解决。
提前致谢
答案 0 :(得分:1)
首先,在您的id
中添加accordionContainer
,然后删除onclickHandler我们的事件。
<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(){};
});
}
}
});
现在,当加载页面时,accordionPane
accordionContainer_1
内的AcordionContainer
已从slieUp(向下)停用。
这是通过为_onTitleClick和_onKeyPress(pane-&gt; _buttonWidget-&gt; _onTitleClick函数...)分配一个空函数来完成的。
如果您想要按需提高或禁用该活动,您可以关注 My sample in GitHUB,在Web服务器中运行该文件。