dojo 根据 class 名称切换 div
dojo toggle divs based on class name
我想通过单击 header 在容器中切换内容 div。该站点使用 DOJO。
我这里有一个 jsfiddle:http://jsfiddle.net/cyuwLzkf/90/
我希望相同 class 的所有容器都具有这种行为。我知道如何在 jquery 中执行此操作,但在 dojo
中不知道
<div class="container">
<div class="header">
This is my heading
</div>
<div class="content hidden">
This is the content of my message that should be hidden by default and toggled by clicking the header.
</div>
</div>
我不确定如何将 show/hide 添加到多个元素或如何 select 与刚刚单击的 header 在同一容器内的内容 div .
也可以将 show/hide 添加到容器本身。如果那更容易。
这是您 fiddle:
的固定代码
require(["dojo/query", "dojo/dom", "dojo/dom-class", "dojo/on", "dojo/domReady!"],
function(query, dom, domClass, on){
query(".container").forEach(function(node){
var header, content;
header = node.getElementsByClassName("header")[0];
content = node.getElementsByClassName("content")[0];
on(header, "click", function(){
domClass.contains(content, "hidden")? domClass.replace(content, "show", "hidden"):
domClass.replace(content, "hidden", "show");
});
})
});
.foo {
/* add custom css */
}
.container{
display: block;
width: 200px;
border: 1px solid black;
}
.container .header {
background-color: grey;
}
.hidden {
display: none;
}
.show {
display: block;
}
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.12.1/dojo/dojo.js"></script>
<div>
Add markup here
<div class="container">
<div class="header">
This is my heading
</div>
<div class="content hidden">
This is the content of my message that should be hidden by default and toggled by clicking the header.
</div>
</div>
<h2> Here a second container that needs same behaviour</h2>
<div class="container">
<div class="header">
This is my heading 2
</div>
<div class="content hidden">
And some other content that should be hidden.
</div>
</div>
</div>
我想通过单击 header 在容器中切换内容 div。该站点使用 DOJO。
我这里有一个 jsfiddle:http://jsfiddle.net/cyuwLzkf/90/
我希望相同 class 的所有容器都具有这种行为。我知道如何在 jquery 中执行此操作,但在 dojo
中不知道<div class="container">
<div class="header">
This is my heading
</div>
<div class="content hidden">
This is the content of my message that should be hidden by default and toggled by clicking the header.
</div>
</div>
这是您 fiddle:
的固定代码require(["dojo/query", "dojo/dom", "dojo/dom-class", "dojo/on", "dojo/domReady!"],
function(query, dom, domClass, on){
query(".container").forEach(function(node){
var header, content;
header = node.getElementsByClassName("header")[0];
content = node.getElementsByClassName("content")[0];
on(header, "click", function(){
domClass.contains(content, "hidden")? domClass.replace(content, "show", "hidden"):
domClass.replace(content, "hidden", "show");
});
})
});
.foo {
/* add custom css */
}
.container{
display: block;
width: 200px;
border: 1px solid black;
}
.container .header {
background-color: grey;
}
.hidden {
display: none;
}
.show {
display: block;
}
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.12.1/dojo/dojo.js"></script>
<div>
Add markup here
<div class="container">
<div class="header">
This is my heading
</div>
<div class="content hidden">
This is the content of my message that should be hidden by default and toggled by clicking the header.
</div>
</div>
<h2> Here a second container that needs same behaviour</h2>
<div class="container">
<div class="header">
This is my heading 2
</div>
<div class="content hidden">
And some other content that should be hidden.
</div>
</div>
</div>