我有这个节目更多/更少的点击事件,它在第一次点击时发生了变化,但我不知道如何让它在返回点击时返回到之前的状态。
<Html>
<head>
</head>
<body>
<div id="showit">Show More</div>
<div class="shown" style="display: none;">
Here is some content that I want to display
</div>
<script>
$(document).ready(function() {
var element = document.getElementById("showit");
$('#showit').click(function(){
$('.shown').slideToggle("fast");
element.innerHTML = "Show Less";
});
});
</script>
</body>
</html>
我是JS新手,有人可以帮忙吗?
感谢。
答案 0 :(得分:1)
这样做:
$(document).ready(function() {
$('#showit').click(function(){
$('.shown').slideToggle("fast");
$(this).text($(this).text() == 'Show Less' ? 'Show More': 'Show Less');
});
});
答案 1 :(得分:0)
最简单的方法是使用标志变量(JS中的开/关或真/假):
var element = document.getElementById("showit");
var isShown = false;
$('#showit').click(function(){
$('.shown').slideToggle("fast");
isShown = !isShown; // flip the flag
element.innerHTML = isShown ? "Show Less" : "Show More";
});
下面的工作小提琴和片段:
$(document).ready(function() {
var element = document.getElementById("showit");
var isShown = false;
$('#showit').click(function() {
$('.shown').slideToggle("fast");
isShown = !isShown; // flip the flag
element.innerHTML = isShown ? "Show Less" : "Show More";
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="showit">Show More</div>
<div class="shown" style="display: none;">Here is some content that I want to display</div>
&#13;
答案 2 :(得分:0)
你可以这样做:
$(document).ready(function() {
var element = document.getElementById("showit");
$('#showit').click(function(){
var $el = $('.shown'),
text = $el.is(":visible") ? 'More' : 'Less';
alert();
$el.slideToggle("fast");
element.innerHTML = "Show " + text;
});
});
这取决于div是否可见,您可以更灵活,因为您可以轻松更改文本。
答案 3 :(得分:0)
解决方案可能很简单,只需添加toogleFlag并处理它:
$(document).ready(function() {
var element = document.getElementById("showit");
var elementIsVisible = true;
$('#showit').click(function(){
$('.shown').slideToggle("fast");
toggleText(element);
});
function toggleText(element){
if(elementIsVisible){
element.innerHTML = "Show Less";
elementIsVisible = false;
}else{
element.innerHTML = "Show More";
elementIsVisible = true;
}
}
});