Я создаю многоуровневое раскрытие
HTML
<div id="sidebar" class="sidebar-left">
<ul class="downlod-categories">
<li class="cat-item cat-item-31">
<a title="Kategória 1 kategória összes bejegyzése" href="?dlm_download_category=kategoria-1">Kategória 1</a>
<ul class="children" style="display: block;">
<li class="cat-item cat-item-32">
<li class="cat-item cat-item-35">
<li class="cat-item cat-item-36">
<a title="Alkategoria 3 kategória összes bejegyzése" href="?dlm_download_category=alkategoria-3">Alkategoria 3</a>
</li>
</ul>
</ul>
</li>
JQuery
$('#sidebar ul.downlod-categories li').each(function(){
var child = $(this).children('ul.children');
if(child.length)
{
$(this).on('click', function(e){
e.preventDefault();
child.show();
});
}
});
И моя проблема заключается в том, что если у фактического li
есть дети, предотвратите действие по умолчанию, но оно применимо и для всех дочерних элементов.
Может ли кто-нибудь дать мне подсказку или указать, что я делаю неправильно?
Спасибо за все ваши ответы, это сработало
Вместо
$(this).on('click', function(e){
e.preventDefault();
child.show();
});
Мне пришлось использовать
if(child.length)
{
$(this).children('a').on('click', function(e){
e.preventDefault();
child.show();
});
}
Измените свой селектор следующим образом:
$('#sidebar ul.downlod-categories > li')
<li>
?</ul>
с</li>
, иначе он будет недействительным и, вероятно, не будет отображаться правильно. Возможно, это также исправит проблему с селектором jQuery, и ответ ниже должен работать.