2014-02-10 3 views
-1

Я пытаюсь добавить груз больше функций с помощью JQuery, которая частично работает, в том, что он показывает далее, но она должна быть скрыта от каких-либо элементов без LIJQuery, если каждое заявление

Вторая часть увеличивает высота элемента 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 код (есть если заявления между ними, чтобы проверить, если элемент должен быть показан)

<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

показать свою часть кода html и css. – social

+0

'if (($ (". Box-category li ul li "). Имеет (" ul "). Length)' extra '(' не уверен, что это проблема – Praveen

+0

Добавил мой html для публикации –

ответ

2

Ваш код бросает: SyntaxError: Unexpected token {

Это происходит потому, что у вас слишком много открытых скобок:

if(($(".box-category li ul li").has("ul").length) { 
^^           ^

Просто изменить это:

if ($(".box-category li ul li").has("ul").length) { 

-

При определении $('.loadMore').show(), вы вызываете метод .show() на ВСЕХ элементов с классом «loadMore», а не только те, специфичные для вашего .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.

Вы можете отделить свою функцию от .loadMore в главном коде.

+0

Да, заметили, что буквально просто после того, как я разместил его, обновил свой код –

+0

@GarethGillman. Я обновил свой ответ. –

+0

добавил мой html, поскольку ваш код не работает для меня –

Смежные вопросы