我目前有两个按钮。第一个按钮显示div。第二个按钮显示第二个div。
以下是codepen
的链接...这是我目前的jQuery ......
$(function(){
$('#first').click(function () {
$('.val').delay(500).slideDown();
});
$('#second').click(function () {
$('.val2').prependTo('.applied').delay(500).slideDown(400, function(){
$('.total').html('£104.00');
});
});
});
我想要做的是只用一个按钮显示两个div。因此用户可以选择按钮来显示第一个div。然后,当他们再次按下相同的按钮时,它将显示第二个div。我想我可能需要使用“if”声明'要说当前是否显示,然后显示第二个,但我的代码似乎不正确。
答案 0 :(得分:2)
如果您设置某些内容以“向下滑动”,如果更改其可见性属性:)
if ($('.second').is(':visible'))
{
//show first
}
else
{
//show second
}
第二次点击后,两者都可见:)在你的情况下:
$('#first').click(function () {
if($('.val2').is(':visible'))
$('.val').delay(500).slideDown();
else
$('.val2').prependTo('.applied').delay(500).slideDown(400,
function(){
$('.total').html('£104.00');
});
});
答案 1 :(得分:1)
使用jQuery检查元素的可见性可能很棘手。但是,您可以使用value属性来存储状态。
<button id="button" value="none">Click Me</button>
和脚本:
$('#button').click(function(){
var $this = $(this);
var state = $this.val();
if (state = 'none'){
//do first action
$this.val('first');
else if (state = 'first'){
//do second action
$this.val('second');
else{
//reset maybe?
$this.val('none');
}
});
或者您可以使用switch语句或类似命令来管理更多状态
答案 2 :(得分:1)
没有if语句
$('#first').one("click",function () {
$('.val').delay(500).slideDown();
bind()
});
var bind=function(){
$('#first').one("click",function () {
$('.val2')
.prependTo('.applied')
.delay(500)
.slideDown(400,function(){
$('.total').html('£104.00');
});
});
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: sans-serif;
font-size: 16px;
color: #5c5c5c;
}
.main {
max-width: 375px;
margin:16px;
}
button {
padding:16px;
border-radius:2px;
border:0;
background:seagreen;
color:white;
font-size:16px;
cursor:pointer;
margin-bottom:16px;
}
.validation{
display: none;
overflow: hidden;
margin-bottom: 16px;
margin-top: 8px;
}
.validation.val2 {
margin-bottom: 0;
}
.validation p {
float: left;
}
.validation span {
float: right;
}
.remaining {
clear: both;
border-top: 1px solid #ccc;
padding-top: 8px;
margin-top: 32px;
font-weight: bold;
overflow: hidden;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="main">
<button id="first">First</button>
<div class="applied">
<div class="validation val">
<p>4537 3728 3273 3284 328</p>
<span>- £40.00</span>
<div class="remaining">
<p>Remaining to pay</p>
<span class="total">£119.00</span>
</div>
</div>
<div class="validation val2">
<p>4537 3728 3273 3284 328</p>
<span>- £15.00</span>
</div>
</div>
</div>
答案 3 :(得分:0)
只需检查此snipet中的标记即可。
$(function(){
var flag = false;
$('#first').click(function () {
if(flag){ $('.val2').prependTo('.applied').delay(500).slideDown(400, function(){
$('.total').html('£104.00');
return;
});
}
flag = true;
$('.val').delay(500).slideDown();
});
});
&#13;
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: sans-serif;
font-size: 16px;
color: #5c5c5c;
}
.main {
max-width: 375px;
margin:16px;
}
button {
padding:16px;
border-radius:2px;
border:0;
background:seagreen;
color:white;
font-size:16px;
cursor:pointer;
margin-bottom:16px;
}
.validation{
display: none;
overflow: hidden;
margin-bottom: 16px;
margin-top: 8px;
}
.validation.val2 {
margin-bottom: 0;
}
.validation p {
float: left;
}
.validation span {
float: right;
}
.remaining {
clear: both;
border-top: 1px solid #ccc;
padding-top: 8px;
margin-top: 32px;
font-weight: bold;
overflow: hidden;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="main">
<button id="first">First</button>
<div class="applied">
<div class="validation val">
<p>4537 3728 3273 3284 328</p>
<span>- £40.00</span>
<div class="remaining">
<p>Remaining to pay</p>
<span class="total">£119.00</span>
</div>
</div>
<div class="validation val2">
<p>4537 3728 3273 3284 328</p>
<span>- £15.00</span>
</div>
</div>
</div>
&#13;
答案 4 :(得分:0)
您可以设置一个变量来跟踪用户是否已经点击过一次。
https://codepen.io/anon/pen/KmoMQG
var clicked = false;
$(function(){
$('#button').click(function () {
if (!clicked) {
$('.val').delay(500).slideDown();
clicked = true;
} else {
$('.val2').prependTo('.applied').delay(500).slideDown(400, function(){
$('.total').html('£104.00');
});
}
});
});
答案 5 :(得分:0)
我已经更新了您的codepen(显然将其保存为匿名) https://codepen.io/anon/pen/oWqLox
我所做的是将点击功能分成他们自己的功能。
添加了一个计数整数类型变量,并在click函数中添加了if check,每次都会增加计数。 (最大数字检查会将计数设置为-1,因此当再次点击计数++增量时,变量默认为0)。
var firstClick = function(){
$('.val').delay(500).slideDown();
};
var secondClick = function(){ $('.val2').prependTo('.applied').delay(500).slideDown(400, function(){
$('.total').html('£104.00');
});
};
$(function(){
var count = 0;
$('#first').click(function () {
if(count === 0)
{
firstClick();
}
if(count === 1){
secondClick();
count = -1;
}
count++;
});
});
&#13;
答案 6 :(得分:0)
在此处,设置变量以跟踪按钮点击事件。
var i=1;
$(function(){
$('#first').click(function () {
if(i==1){
$('.val').delay(500).slideDown();
i=2;
}
else if(i==2) {
$('.val2').prependTo('.applied').delay(500).slideDown(400, function(){
$('.total').html('£104.00');
});
}
});
});
答案 7 :(得分:0)
你很健康。尝试运行此代码段
$(function() {
$('#first').click(function() {
if ($('.val').is(':visible')) {
$('.val2').prependTo('.applied').delay(500).slideDown(400, function() {
$('.total').html('£104.00');
});
} else {
$('.val').delay(500).slideDown();
}
});
});
&#13;
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: sans-serif;
font-size: 16px;
color: #5c5c5c;
}
.main {
max-width: 375px;
margin: 16px;
}
button {
padding: 16px;
border-radius: 2px;
border: 0;
background: seagreen;
color: white;
font-size: 16px;
cursor: pointer;
margin-bottom: 16px;
}
.validation {
display: none;
overflow: hidden;
margin-bottom: 16px;
margin-top: 8px;
}
.validation.val2 {
margin-bottom: 0;
}
.validation p {
float: left;
}
.validation span {
float: right;
}
.remaining {
clear: both;
border-top: 1px solid #ccc;
padding-top: 8px;
margin-top: 32px;
font-weight: bold;
overflow: hidden;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="main">
<button id="first">Single</button>
<div class="applied">
<div class="validation val">
<p>4537 3728 3273 3284 328</p>
<span>- £40.00</span>
<div class="remaining">
<p>Remaining to pay</p>
<span class="total">£119.00</span>
</div>
</div>
<div class="validation val2">
<p>4537 3728 3273 3284 328</p>
<span>- £15.00</span>
</div>
</div>
</div>
&#13;