2010-11-03 64 views
5

我想在Dojo中實現div div的基本顯示/隱藏。基於我與之合作過的其他javascript框架,這應該很容易,但我發現它充其量是困難的。切換Dojo dijit的顯示

下面是從

<script type="text/javascript"> 
dojo.require("dijit.form.Button"); 
dojo.require("dijit.layout.ContentPane"); 
dojo.require("dojo.fx"); 
var toggler = null; 
function basicToggle() { 
    toggler = new dojo.fx.Toggler({ 
     node: "panel", 
     showFunc : dojo.fx.wipeIn, 
     hideFunc : dojo.fx.wipeOut 
    }) 
} 
dojo.addOnLoad(basicToggle); 
</script> 

代碼下面是我在機身碼。

<button dojoType="dijit.form.Button">  
    <img src="wrapper/images/header-settings.png" border="0" />  
    <script type="dojo/method" event="onClick"> 
     toggler[dijit.byId("panel").attr("displayed") ? 'show':'hide'](); 
    </script> 
</button> 
<div id="panel" dojoType="dijit.layout.ContentPane" style="border: .2em dotted  #900;display: none"> 
This is a content pane.</div> 
</body> 

我現在看到的行爲是,div在點擊按鈕後瞬間顯示,但隨後又被隱藏。我究竟做錯了什麼?

回答

5

我認爲你有顯示/隱藏邏輯倒退?另外,我認爲'展示'來自Dojo的一個非常非常老的版本。嘗試只是在風格看,而不是(注意,這再次翻轉,因爲我檢查「無」的邏輯)

toggler[(dojo.style("panel","display") == "none") ? 'show':'hide'](); 

有它使用dojo.connect來達到同樣效果的例子in the docs