分开show/hidejquery?
Separate show/hide jquery?
我的可折叠 jquery 代码有问题。
我想分隔一些 DIV,但如果我单击一个元素,无论哪个元素,它都会打开所有其他元素。我必须使用的不仅仅是这些可折叠的东西(大约 40 个,因为一页中有很多版本,我必须保留一些地方)。我想知道如何将 DIV 彼此分开。
这是我的代码:
<script type="text/javascript"
src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$(".flip").click(function() {
$(".panel").slideToggle("slow");
});
});
</script>
<style type="text/css">
div.panel,p.flip {
margin: 0px;
padding: 5px;
text-align: center;
background: #FFCFF9;
border: solid 1px #fff;
}
div.panel {
widht: 50%;
height: 100px;
display: none;
}
</style>
</head>
<div class="panel" id="1">
<p>Fist panel text</p>
</div>
<p class="flip" id="1">1st version</p>
<div class="panel" id="2">
<p>Second panel text</p>
</div>
<p class="flip" id="2">2nd version</p>
起初我试过这个:
http://www.dynamicdrive.com/dynamicindex17/animatedcollapse.htm
但是也有一个问题;它只显示第一个DIV的内容,其余的不会下来。我不知道我是否应该命名 DIVs(正如你在代码中看到的那样,我已经试过了),但如果我这样做,我不知道正确的做法是什么它。如果可以的话,请帮帮我。谢谢!
这是一个 JS fiddle 的工作版本。
https://jsfiddle.net/b3bc4yk6/
您的代码不起作用的主要原因是您没有针对您想要 expand/contract 的 div,而是针对他们所有人。正如您从 HTML 中看到的,我已为每个面板指定了自己的 ID。
<div class="panel" id="panel-1">
<p>Fist panel text</p>
</div>
<p class="flip" id="1">1st version</p>
<div class="panel" id="panel-2">
<p>Second panel text</p>
</div>
<p class="flip" id="2">2nd version</p>
另请注意,ID 应该是唯一的,因此翻转元素和面板元素不应具有相同的 ID。
现在,在 jquery 中,我们可以获取翻盖的 ID 并定位特定面板。
$(document).ready(function() {
$(".flip").click(function() {
$("#panel-" + $(this).attr('id')).slideToggle("slow");
});
});
希望对您有所帮助!
首先,我想提醒您,id 需要是唯一的。在您的示例中,有两个元素 id="1" 和两个元素 id="2".
您还可以将每个面板/翻转组合包裹在一个容器中 div。
Html:
<div class="panelContainer">
<div class="panel">
<p>Fist panel text</p>
</div>
<p class="flip" id="1">1st version</p>
</div>
<div class="panelContainer">
<div class="panel" id="2">
<p>Second panel text</p>
</div>
<p class="flip" id="2">2nd version</p>
</div>
在您的 js 中,您为带有 class "flip" 的每个元素放置了一个点击函数,以切换带有 class "panel" 的所有元素。
您要做的是切换与所点击的翻盖相对应的面板。
Js:
<script type="text/javascript">
$(document).ready(function() {
$(".flip").each(function(){
$(this).click(function() {
$(this).closest(".panelContainer").find(".panel").slideToggle("slow");
});
});
});
</script>
尚未测试代码,但您应该了解大致情况。
试试这个:
<script type="text/javascript">
$(document).ready(function() {
$(".flip").click(function() {
$(this).next(".panel").slideToggle("slow");
});
});
</script>
我的可折叠 jquery 代码有问题。
我想分隔一些 DIV,但如果我单击一个元素,无论哪个元素,它都会打开所有其他元素。我必须使用的不仅仅是这些可折叠的东西(大约 40 个,因为一页中有很多版本,我必须保留一些地方)。我想知道如何将 DIV 彼此分开。 这是我的代码:
<script type="text/javascript"
src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$(".flip").click(function() {
$(".panel").slideToggle("slow");
});
});
</script>
<style type="text/css">
div.panel,p.flip {
margin: 0px;
padding: 5px;
text-align: center;
background: #FFCFF9;
border: solid 1px #fff;
}
div.panel {
widht: 50%;
height: 100px;
display: none;
}
</style>
</head>
<div class="panel" id="1">
<p>Fist panel text</p>
</div>
<p class="flip" id="1">1st version</p>
<div class="panel" id="2">
<p>Second panel text</p>
</div>
<p class="flip" id="2">2nd version</p>
起初我试过这个: http://www.dynamicdrive.com/dynamicindex17/animatedcollapse.htm 但是也有一个问题;它只显示第一个DIV的内容,其余的不会下来。我不知道我是否应该命名 DIVs(正如你在代码中看到的那样,我已经试过了),但如果我这样做,我不知道正确的做法是什么它。如果可以的话,请帮帮我。谢谢!
这是一个 JS fiddle 的工作版本。
https://jsfiddle.net/b3bc4yk6/
您的代码不起作用的主要原因是您没有针对您想要 expand/contract 的 div,而是针对他们所有人。正如您从 HTML 中看到的,我已为每个面板指定了自己的 ID。
<div class="panel" id="panel-1">
<p>Fist panel text</p>
</div>
<p class="flip" id="1">1st version</p>
<div class="panel" id="panel-2">
<p>Second panel text</p>
</div>
<p class="flip" id="2">2nd version</p>
另请注意,ID 应该是唯一的,因此翻转元素和面板元素不应具有相同的 ID。
现在,在 jquery 中,我们可以获取翻盖的 ID 并定位特定面板。
$(document).ready(function() {
$(".flip").click(function() {
$("#panel-" + $(this).attr('id')).slideToggle("slow");
});
});
希望对您有所帮助!
首先,我想提醒您,id 需要是唯一的。在您的示例中,有两个元素 id="1" 和两个元素 id="2".
您还可以将每个面板/翻转组合包裹在一个容器中 div。
Html:
<div class="panelContainer">
<div class="panel">
<p>Fist panel text</p>
</div>
<p class="flip" id="1">1st version</p>
</div>
<div class="panelContainer">
<div class="panel" id="2">
<p>Second panel text</p>
</div>
<p class="flip" id="2">2nd version</p>
</div>
在您的 js 中,您为带有 class "flip" 的每个元素放置了一个点击函数,以切换带有 class "panel" 的所有元素。
您要做的是切换与所点击的翻盖相对应的面板。
Js:
<script type="text/javascript">
$(document).ready(function() {
$(".flip").each(function(){
$(this).click(function() {
$(this).closest(".panelContainer").find(".panel").slideToggle("slow");
});
});
});
</script>
尚未测试代码,但您应该了解大致情况。
试试这个:
<script type="text/javascript">
$(document).ready(function() {
$(".flip").click(function() {
$(this).next(".panel").slideToggle("slow");
});
});
</script>