Как с помощью 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 и если он есть, то отключать ссылку.

Большое спасибо за помощь.

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;
        });