我正在尝试通过jQuery添加一个加载更多功能,这部分工作,因为它显示了更多的读取,但它应该隐藏在没有LI
的任何元素上当点击加载更多时,第二部分会增加UL元素的高度,但这会在每个ul上发生,而不是点击负载更多的地方
$('.loadMore').hide();
$(".box-category li ul li").each(function() {
if ( $(this).has('ul').length ) {
$(this).find('.loadMore').show();
$(this).find('ul').css({'overflow' : 'hidden', height : '50px'});
$('.loadMore').click(function () {
$('.box-category li ul li ul').css('height','auto');
$('.loadMore').hide();
});
}
});
我怎样才能打开每个UL而不是每个UL?
HTML代码(中间有if语句来检查是否应显示某个项目)
<ul class="box-category">
<li>
<a href="<?php echo $category['href']; ?>" class="active"><?php echo $category['name']; ?></a>
<ul>
<li>
<a href="<?php echo $child['href']; ?>"> - <?php echo $child['name']; ?></a>
<ul>
<li>
<a href="<?php echo $sisters['href']; ?>"> - <?php echo $sisters['name']; ?></a>
</li>
</ul>
<div class="loadMore">Load more</div>
</li>
</ul>
</li>
</ul>
答案 0 :(得分:2)
您的代码抛出:SyntaxError: Unexpected token {
这是因为你有太多的开括号:
if( ($(".box-category li ul li").has("ul").length ) {
^ ^ ^
只需将其更改为:
if ( $(".box-category li ul li").has("ul").length ) {
-
在指定$('.loadMore').show()
时,您使用“loadMore”类调用所有元素上的.show()
方法,而不仅仅是{{1} } element。
假设您的.box-category
元素包含在.loadMore
元素中,您可以这样做:
.box-category
循环遍历每个$('.loadMore').hide();
$(".box-category li ul li").each(function() {
if ( $(this).has('ul').length ) {
$(this).find('.loadMore').show();
$(this).find('ul').css({ ... });
}
});
元素,并在调用.box-category li ul li
之前尝试查找.loadMore
元素。然后,它会将样式应用于同一show()
中包含的ul
。
您可以将li
点击功能分离到主代码中。