Как с помощью jquery проверить наличие дочернего элемента и выполнить действие, если ребенок есть.
Добрый день.
Сложно сформулировал вопрос.
Дало вот в чем.
Есть скрипт интернет-магазина. Там есть категории и подкатегории.
Я путем хитрых панипуляция сделал так, что все категории и подкатегории показываются одим списком, с помощью jquery он раскрывается по нажатию (как дерево) все хорошо.
Но.
Есть главные категории, в которых есть подкатегории, если на нее нажать, то пойдет редирект на страницу с этой катеогорией (и только потом откроется дерево)
Соответственно нужно убрать ссылки из этих категорий (я знаю только $('a').arrt('href','javascript:void(0)');
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .html4strict.geshi_code {font-family:monospace;} .html4strict.geshi_code .imp {font-weight: bold; color: red;} .html4strict.geshi_code .kw2 {color: #000000; font-weight: bold;} .html4strict.geshi_code .kw3 {color: #000066;} .html4strict.geshi_code .es0 {color: #000099; font-weight: bold;} .html4strict.geshi_code .br0 {color: #66cc66;} .html4strict.geshi_code .sy0 {color: #66cc66;} .html4strict.geshi_code .st0 {color: #ff0000;} .html4strict.geshi_code .nu0 {color: #cc66cc;} .html4strict.geshi_code .sc-1 {color: #808080; font-style: italic;} .html4strict.geshi_code .sc0 {color: #00bbdd;} .html4strict.geshi_code .sc1 {color: #ddbb00;} .html4strict.geshi_code .sc2 {color: #009900;} .html4strict.geshi_code span.xtra { display:block; }
<ul id="category">
<li>
<a href="i_don_like_this_link1.html">Link1</a>
<ul>
<li>
<a href="good_link1.1.html">Link1.1</a>
</li>
<li>
<a href="i_don_like_this_link1.2.html">Link1.2</a>
<ul>
<li>
<a href="good_link1.2.1.html">Link1.2.1</a>
</li>
<li>
<a href="good_link1.2.2.html">Link1.2.2</a>
</li>
</ul>
</li>
</ul>
</li>
<li>
<a href="good_link2.html">Link2</a>
</li>
</ul>
В общем я хочу, но не могу, написать скрипт, который бы проверял элемент (а может быть много вложенных элементов) на наличие ul и если он есть, то отключать ссылку.
Большое спасибо за помощь.
Сложно сформулировал вопрос.
Дало вот в чем.
Есть скрипт интернет-магазина. Там есть категории и подкатегории.
Я путем хитрых панипуляция сделал так, что все категории и подкатегории показываются одим списком, с помощью jquery он раскрывается по нажатию (как дерево) все хорошо.
Но.
Есть главные категории, в которых есть подкатегории, если на нее нажать, то пойдет редирект на страницу с этой катеогорией (и только потом откроется дерево)
Соответственно нужно убрать ссылки из этих категорий (я знаю только $('a').arrt('href','javascript:void(0)');
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .html4strict.geshi_code {font-family:monospace;} .html4strict.geshi_code .imp {font-weight: bold; color: red;} .html4strict.geshi_code .kw2 {color: #000000; font-weight: bold;} .html4strict.geshi_code .kw3 {color: #000066;} .html4strict.geshi_code .es0 {color: #000099; font-weight: bold;} .html4strict.geshi_code .br0 {color: #66cc66;} .html4strict.geshi_code .sy0 {color: #66cc66;} .html4strict.geshi_code .st0 {color: #ff0000;} .html4strict.geshi_code .nu0 {color: #cc66cc;} .html4strict.geshi_code .sc-1 {color: #808080; font-style: italic;} .html4strict.geshi_code .sc0 {color: #00bbdd;} .html4strict.geshi_code .sc1 {color: #ddbb00;} .html4strict.geshi_code .sc2 {color: #009900;} .html4strict.geshi_code span.xtra { display:block; }
<ul id="category">
<li>
<a href="i_don_like_this_link1.html">Link1</a>
<ul>
<li>
<a href="good_link1.1.html">Link1.1</a>
</li>
<li>
<a href="i_don_like_this_link1.2.html">Link1.2</a>
<ul>
<li>
<a href="good_link1.2.1.html">Link1.2.1</a>
</li>
<li>
<a href="good_link1.2.2.html">Link1.2.2</a>
</li>
</ul>
</li>
</ul>
</li>
<li>
<a href="good_link2.html">Link2</a>
</li>
</ul>
В общем я хочу, но не могу, написать скрипт, который бы проверял элемент (а может быть много вложенных элементов) на наличие ul и если он есть, то отключать ссылку.
Большое спасибо за помощь.
1 ответов
$("#category li").each(function(){
var list = $(this).find('li');
if(list.length > 0){
$($(this).find('a')[0]).attr("href", "javascript:;");
}
})
Лучше сразу применить jQuery только к необходимым элементам, а не ко всем.
$('#category a').click(function(){
$(this).next().animate(
{'height':'toggle'}, 200, 'linear'
);
return false;
});
Предположу, что вот так можно сделать. Анимацию вешаем на списки которые идут сразу после ссылки. То есть находим все ссылки "A" и на следующий элемент в этом же месте "A UL" делаем анимацию.
Можно выбрать все "A", которые не являются последними-дочерними элементами, и к ним уже прицепить обработчик
$('#category a').not('#category a:last-child').click(function(e){
e.stopPropagation();
$(this).next().animate(
{'height':'toggle'}, 200, 'linear'
);
return false;
});