我希望在点击按钮时显示有"隐藏"类的LI。
$(".show-more a").on("click", function() {
if(linkText === "SHOW MORE"){
linkText = "Show less";
$('.hidden').css('visible', 'visible');
$('.hidden').css('display', 'block');
} else {
linkText = "Show more";
$('.hidden').css('visible', 'hidden');
$('.hidden').css('display', 'none');
};
$this.text(linkText);
});

.hidden {
display: none;
visibility: hidden;
}

<ul>
<li>Lorem</li>
<li>Lorem</li>
<li class="hidden">Ipsum</li>
</ul>
<div class="show-more">
<a href="#">Show more</a>
</div>
&#13;
我认为我的Javascript绝对错误,我是初学者。 帮我 感谢
答案 0 :(得分:1)
您正在执行严格的比较===
,因此字母大小写非常重要。
if(linkText === "Show more"){
删除隐藏这些元素的类怎么样?
$(".show-more a").on("click", function() {
if(linkText === "Show more"){
linkText = "Show less";
$('li.hidden').removeClass('hidden')
} else {
linkText = "Show more";
$('li.hidden').addClass('hidden')
};
$this.text(linkText);
});
js使用一些额外的重构: https://jsfiddle.net/rt0cs8jh/
答案 1 :(得分:1)
默认情况下,您可以为要隐藏的每个元素指定一个hidden
类。然后删除此类或只需在按钮单击时滑动它。
var active = false;
$(".show-more a").on("click", function() {
$('li.hidden').slideToggle();
$(this).text(active ? 'Show more' : 'Show less')
active = !active;
});
&#13;
.hidden {
display: none;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li>Lorem</li>
<li>Lorem</li>
<li class='hidden'>Lorem</li>
<li class='hidden'>Lorem</li>
<li class='hidden'>Lorem</li>
<li class="hidden">Ipsum</li>
</ul>
<div class="show-more">
<a href="#">Show more</a>
</div>
&#13;
答案 2 :(得分:0)
这是我怎么写的
$(".show-more a").on("click", function() {
var currentText = $(this).text();
if(currentText === "Show More"){
$('.hidden').show();
$(this).text("Show Less");
} else {
$('.hidden').hide();
$(this).text("Show More");
};
});
答案 3 :(得分:0)
你只需点击处理程序,找到所有具有隐藏类的ul li元素,然后将其删除。下面的代码应该做你的蚂蚁。
$('.show-more a').on('click', function(){
$('ul li.hidden').removeClass('hidden');
});
答案 4 :(得分:0)
使用:gt(2)
之类的选择器可以使您的代码更具扩展性。此选择器将选择除第一个2
以外的所有项目。此外,检查.is(":visible")
是一种更安全的方式来查看将文本设置为的内容。
此外,使用.toggle()
可能会有点突然,如果您想使用.slideUp()
和.slideDown()
,则可以将代码更改为.slideToggle()
。
$("li:gt(2)").hide();
$(".show-more a").on("click", function() {
$("li:gt(2)").toggle();
if ($("li:gt(2)").is(":visible")) {
$(this).html("Show less");
} else {
$(this).html("Show more");
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li>Lorem</li>
<li>Lorem</li>
<li>Ipsum</li>
<li>Ipsum</li>
<li>Ipsum</li>
<li>Ipsum</li>
<li>Ipsum</li>
<li>Ipsum</li>
</ul>
<div class="show-more">
<a href="#">Show more</a>
</div>
&#13;
答案 5 :(得分:0)
我会重构这个以添加父元素,然后通过父类切换这些东西的状态并更改CSS中的所有显示级别内容。
var $parent = $('.parent'),
$links = $('.show-more a');
$links.on("click", function() {
$parent.toggleClass('more');
});
.parent .hidden, .more li {
display: none;
}
.more .hidden {
display: list-item;
}
a:after {
content: 'Less';
}
.more a:after {
content: 'More';
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="parent">
<ul>
<li>Lorem</li>
<li>Lorem</li>
<li class="hidden">Ipsum</li>
</ul>
<div class="show-more">
<a href="#">Show </a>
</div>
</div>
答案 6 :(得分:0)
您的第一个也是最大的问题是,您的功能基于现有数据,因此无法执行(您的功能不知道linkText是什么或者linkText值是什么。
其次,您不必更改&#34;隐藏&#34;的css属性。 class,你可以从元素中切换它。
这样可以解决问题:
enter code hereUse cake php book to read further.