jQuery如果每个语句

时间:2014-02-10 12:50:14

标签: jquery

我正在尝试通过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>

1 个答案:

答案 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点击功能分离到主代码中。

相关问题