2016-02-02 150 views
0

我正在將DOJO從1.4升級到1.8版本。現在,我定義了dojo acccordian小部件。我需要停止在onclick事件中擴展Accordian小部件。dojo的event.preventDefault()不工作dojo 1.8版本

當我們使用dojo 1.4版本的時候,我們使用下面的代碼片斷來停止onclick事件。

模板象下面這樣:

<div data-dojo-type="dijit.layout.AccordionContainer" style="height: 300px;" onclick="onClickHandler"> 

的js象下面這樣:

function onClickHandler(evt){ 
    dojo.stopEvent(evt); 
} 

得到stucked在以下問題上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 & stopPropagation,儘管它並沒有停止手風琴窗口的onclick事件。

請幫我解決它。

在此先感謝

回答

1

第一件事,添加idaccordionContainer並刪除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(){}; 
      }); 
     } 
    } 
}); 

所以現在,當加載頁面時,你accordionPaneaccordionContainer_1AcordionContainer來自slieUp(向下)禁用。

,這是通過分配一個空函數的_onTitleClick和_onKeyPress完成(面板 - > _ buttonWidget - > _ onTitleClick功能...)

如果你想enble或禁用對需求的情況下,你可以按照 My sample in GitHUB,在Web服務器中運行該文件。

+0

感謝您的回覆bRIMOs.I嘗試了dojo/_base/event.though中的event.stop方法,但它並未停止onclick事件。是否有其他事件停止功能可用於實現此目的? – ArunK

+0

只是一個問題,你有一個'dijit/layout/AccordionPane'裏面的div, ,你想停止這些'AccordionPanes'的滑動和滑動! –

+0

是的。我想停止滑動並在手風琴容器內滑動手風琴窗格。 – ArunK