[英]Javascript - When a button is clicked the CSS property toggle after second click
I am working on a simple Play and Pause button code with Javascript. 我正在使用Javascript开发简单的播放和暂停按钮代码。 The script is toggling the CSS property; 该脚本正在切换CSS属性。 however, after a delay. 但是,在延迟之后。 At the moment, the toggle happens on second click. 此刻,切换会在第二次点击时发生。 Not sure what the issue is. 不知道是什么问题。
$(document).click(function () { $("#startClock").click(function () { $("#startClock").css("display", "none"); $("#stopClock").css("display", "block"); }); $("#stopClock").click(function () { $("#stopClock").css("display", "none"); $("#startClock").css("display", "block"); }); });
#stopClock { display: none; } #startClock { display: block; }
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js?ver=4.1'></script> <button id=startClock >Start</button> <button id=stopClock >Pause</button> <br/>
Instead of $(document).click
go for $(document).ready
代替$(document).click
去$(document).ready
$(document).ready(function () { $("#startClock").click(function () { $("#startClock").css("display", "none"); $("#stopClock").css("display", "block"); }); $("#stopClock").click(function () { $("#stopClock").css("display", "none"); $("#startClock").css("display", "block"); }); });
#stopClock { display: none; } #startClock { display: block; }
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js?ver=4.1'></script> <button id=startClock >Start</button> <button id=stopClock >Pause</button> <br/>
It was happening because on first click
which was getting listen by document
; 之所以发生这是因为第一次click
被document
监听; the click
event handler were getting attached to your button
. click
事件处理程序已附加到您的button
。 Hence needed 2 clicks for the CSS animation. 因此需要2次单击才能获得CSS动画。
$(document).ready(function() { $("#startClock").click(function() { $("#startClock").css("display", "none"); $("#stopClock").css("display", "block"); }); $("#stopClock").click(function() { $("#stopClock").css("display", "none"); $("#startClock").css("display", "block"); }); });
#stopClock { display: none; } #startClock { display: block; }
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js?ver=4.1'></script> <button id=startClock >Start</button> <button id=stopClock >Pause</button> <br/>
Because at first you first time clicked it twice cause of click inside of click event. 因为一开始您第一次单击它两次,所以单击事件内部会导致单击。 You clicked document and after clicked button. 您单击了文档,然后单击了按钮。
what if you change 如果你改变怎么办
$(document).click(function() {
to 至
$(document).ready(function() {
I can't see the context but it looks like you have two nested click listeners. 我看不到上下文,但看起来您有两个嵌套的单击侦听器。
Issue is you have wrapped code inside $(document).click
It should be $(document).ready()
问题是您将代码包装在$(document).click
。应该是$(document).ready()
$(document).ready(function() { $("#startClock").click(function() { $("#startClock").css("display", "none"); $("#stopClock").css("display", "block"); }); $("#stopClock").click(function() { $("#stopClock").css("display", "none"); $("#startClock").css("display", "block"); }); });
#stopClock { display: none; } #startClock { display: block; }
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js?ver=4.1'></script> <button id=startClock>Start</button> <button id=stopClock>Pause</button> <br/>
You should avoid using style attribute. 您应该避免使用样式属性。 Rather you should use class
. 相反,您应该使用class
。 If you switch to class
approach, you can use, toggleClass
or addClass/removeClass
functions to update visibility. 如果切换到class
方法,则可以使用toggleClass
或addClass/removeClass
函数来更新可见性。
$(document).ready(function() { $("#startClock, #stopClock").click(function() { $("#startClock").toggleClass("hide"); $("#stopClock").toggleClass("hide"); }); });
.hide{ display:none }
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js?ver=4.1'></script> <button id="startClock">Start</button> <button id="stopClock" class="hide">Pause</button> <br/>
Try this one, 试试这个
Using preventDefault
you can do it. 使用preventDefault
可以做到。
$(document).ready(function () {
$("#startClock").click(function (e) {
e.preventDefault();
$("#startClock").css("display", "none");
$("#stopClock").css("display", "block");
});
$("#stopClock").click(function (e) {
e.preventDefault();
$("#stopClock").css("display", "none");
$("#startClock").css("display", "block");
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.