2009-12-01 2 views
1

Я работаю над меню на два уровня неупорядоченного списка, и до сих пор смог принять некоторые достойные шаги новичков в определении того, как показать и скрыть меню с помощью jQuery, а также оживить его немного.обнаружить ссылку на уровне 2 уровня li и добавить span, плюс добавить класс к родительскому li на hover

У меня есть два вопроса, чтобы решить:

  1. Я хочу иметь родительский Li остается в состоянии парения, когда он парил в то время как мышь парит над его ребенком ул
  2. Я хотел бы чтобы определить, имеет ли родительский элемент li, и добавляет промежуток между тегами, в результате чего: <a href="#">Text <span style="addedStyle">&nbsp;</span></a>

Вот jQuery, который я использую до сих пор. ".addClass (" active ")", похоже, не очень много:

$(".leftMenu li:has('ul')").hover(
    function(){ 
     $(this).addClass("active").children().animate({opacity: 'show'}); 
    }, 
    function(){ 
     $(this).removeClass("active").children().hide(); 
    } 
); 
//this line is wrong and non-functional 
$(".leftMenu li:has('ul > a')").append('<span class="arrowdiv">&nbsp;</span>'); 

Ожидание вперед!

+1

Хотя переформатирования я добавил несколько полу-колонов и удалили лишние закрывающие скобки в конце Возможно, это была «нефункциональная» линия. – jitter

+1

Спасибо, дрожь. Я вижу преимущества разрыва двух функций, таких как простота будущих дополнений. Очистка кода проницательна и высоко ценится. Я также смог решить свой первый вопрос и оставить родителя «активным», когда ребенок зависал. Нефункциональная строка не вызывает никаких ошибок, однако, похоже, она не делает то, что я хочу. Я не уверен, что условие js на 100% правильное. Мне нужно сначала найти тег, который находится внутри .leftMenu> li, только если у li есть дочерние элементы, а затем вставить промежуток перед закрывающим тегом. –

ответ

1

Выяснил это. Узнавать что-то новое каждый день!

Мне нужно было найти «a» и добавить его к этому. это просто было добавление ко всему ли, и я должен был сосредоточиться на а, что я, очевидно, как это:

$(".leftMenu li:has('ul') > a").append('<span class="arrowdiv">&nbsp;</span>') 
.parent().hover(
function(){ 
    $(this).addClass("active").children().animate({opacity: 'show'}); 
}, 
function(){ 
$(this).removeClass("active").children().hide(); 
} 
); 
Смежные вопросы