Делаем гармошку из многоуровневый список HTML


Я пишу некоторый код, чтобы включить мульти-уль уровень в гармошку:

$(document).ready(function () {

$('.s4-ql li ul').each(function (index) {
    $(this).hide();
});

$('.s4-ql ul li ul').each(function (index) {
    var length = 0;
    length = $(this).children().length;
    var CurrentItem = $(this).parent().find('a:first');
    CurrentItem.find('.menu-item-text').append('<span style=\'float:right;font-size:0.8em;\'>(' + length + ')</span>');
});
$('.s4-ql ul li').hover(
  function () {
      $(this).find('a:first').next().slideToggle('normal');
  },
  function () {
      $(this).find('a:first').next().slideToggle('normal');
  }
);
});

Может кто-нибудь сказать мне, буду ли я быть достаточно эффективными или же есть где-нибудь, что я могу "подрезать жирок", так сказать? В кодексе также подсчитывает количество детей, и отображает это число на главной родителя.



229
4
задан 15 декабря 2011 в 03:12 Источник Поделиться
Комментарии
2 ответа

Будет неплохо, если вы можете предоставить ваш HTML-разметки. Без нее я могу сделать это:

jQuery(function($) {
$('.s4-ql li ul').hide();
$('.s4-ql ul li').hover(function() {
$(this).find('a:first').next().slideToggle();
}, function() {
$(this).find('a:first').next().slideToggle();
}).find('ul').each(function(index) {
var $this = $(this);
$this.parent().find('a:first .menu-item-text').append(['<span style=\'float:right;font-size:0.8em;\'>(', $this.children().length, ')</span>'].join(''));
});;
});

3
ответ дан 15 декабря 2011 в 03:12 Источник Поделиться

Все методы jQuery и мутации действуют на каждый элемент в наборе.
Вы можете просто написать $('.С4-КЖ ли уль).скрыть(); вам не нужно .каждый.

Также, вы должны просто написать Варе длина = $(это).детей().длина; в одну линию.

1
ответ дан 15 декабря 2011 в 03:12 Источник Поделиться