2016-04-26 5 views
0

Попытка toggleClass ближайший элемент #dropdown с помощью jQuery, и я не могу найти ul. jQuery загружается отлично, и каждый элемент подтверждает клик.jquery onclick toggle ближайший UL

HTML код:

<li onclick="showDropDown()" class="filter-button"> 
          Filter by <strong>Aread</strong> + 
    <ul id="dropdown" class="dropdown-content"> 
     <li><a href="">Test 1</a></li> 
     <li><a href="">Test 3</a></li> 
     <li><a href="">Test 2</a></li> 
    </ul> 
</li> 

код JQuery является:

function showDropDown() { 
    jQuery(this).parents("li").find("ul").toggleClass('show'); 
    } 
+1

нет необходимости '.parents ("ли")' вашего события мыши находится в li, все, что вам нужно, это найти ul внутри li. – guradio

+0

попробуйте использовать jQuery (this). Дети вместо родителей. –

+0

Я думаю, что ваш код не является полным, попробуйте сделать скрипку или объяснить лучше, вы ищете $ (this) .parents, но в вашем html нет родителя UL для лидера # # – Pietro

ответ

1

dropdown уль является дочерним элементом filter-button ли. Так что вам не нужно, чтобы найти родитель здесь

$(".filter-button").click(function() { 
    $(this).find("ul").toggleClass('show'); 
}); 

ИЛИ

Если вам действительно нужно использовать метод инлайн призывающее то вам нужно передать текущий объект, а,

<li onclick="showDropDown(this)" class="filter-button"> 

код,

function showDropDown(obj) { 
    jQuery(obj).find("ul").toggleClass('show'); 
} 
+0

Вы уверены, что ' это? Небольшие изменения в разметке сделают .. – Rayon

+0

Теперь это прекрасно? –

+1

Да .. _Перфект! _ Я собирался предложить то же самое :) – Rayon

0

Если есть много элементов UL как child и nextSibling, вы должны написать, как показано ниже.

демо: https://jsfiddle.net/nigayo/Lo3yf31y/1/

[JavaScript]

 $(".filter-button").click(function() { 
     $(this).find("ul:first").toggleClass('show'); 
     $(this).next("ul:first").toggleClass('show'); 
     }); 

[HTML]

<li class="filter-button"> 
    Filter by <strong>Aread</strong> + 
    <ul id="dropdown" class="dropdown-content"> 
     <li><a href="">Test 2</a></li> 
    </ul> 

    <ul id="dropdown2" class="dropdown-content"> 
     <li><a href="">Test 2</a></li> 
    </ul> 
    </li> 

    <ul id="dropdown_next" class="dropdown-content"> 
     <li><a href="">Test 2</a></li> 
    </ul> 
    <ul id="dropdown_next2" class="dropdown-content"> 
    <li><a href="">Test 2</a></li> 
    </ul> 
1

Вы отсутствовали this объект в method вызова.

См. Демо here.

Вы можете найти код ниже:

HTML:

<ul> 
    <li onclick="showDropDown(this)" class="filter-button"> 
    Filter by <strong>Aread</strong> + 
    <ul id="dropdown" class="dropdown-content"> 
     <li><a href="">Test 1</a></li> 
     <li><a href="">Test 3</a></li> 
     <li><a href="">Test 2</a></li> 
    </ul> 
    </li> 
</ul> 

JS:

function showDropDown(obj) { 
    $(obj).find("ul").toggle(); 
} 
Смежные вопросы