невозможно удалить вложенные списки в переменной jQuery

StackOverflow https://stackoverflow.com/questions/2408099

  •  18-09-2019
  •  | 
  •  

Вопрос

У меня есть вложенный упорядоченный список, который я анимирую с помощью этого кода...

               var $li = $("ol#update li");
                function animate_li(){
                   $li.filter(':first')
                      .animate({
                         height:  'show',
                         opacity: 'show'
                      }, 500, function(){
                        animate_li();
                      });
                  $li = $li.not(':first');
                }
                animate_li();

теперь я хочу нет чтобы показать или анимировать вложенные списки (ol s) или li в ols

взгляните на пример здесь

Структура моих старых

 <ol>
 <li class="bar248">
        <div class="nli">
        <div class="pic">
            <img src="dir/anonymous-thumb.png"alt="image" />
        </div>
        <div align="left" class="text">
        <span>
                <span class="delete_button"><a href="#" id="test" class="delete_update">R</a></span>

                test shouted <span class="timestamp"> 2010/02/24 18:34:26 </span> <br />
        this
        </span>
        </div>

        <div class="clear"></div>
        </div>
        <div class="padd">

        </div>
        <ol class="comment">
            <li>                       
                    <div>Testing </div>
            </li>
            <li>
                    <div>Another Test </div>
            </li>

        </ol>

    </li>

  </ol>

Я могу скрыть вложенные ols, используя этот код...

      $("ol#update li ol").hide();

Но все равно время тратится на их анимацию, хотя они скрыты.

Я не могу удалить вложенные файлы li с помощью этого кода

var $li = $("ol#update li").not("ol#update li ol");
$li = $li.not("ol#update li ol");

Взгляни на это здесь

Любая помощь

Спасибо
Прадют

Это было полезно?

Решение

Пробовали ли вы настроить исходный список следующим образом:

var $li = $("ol#update > li");

Это позволит получить только <li> элементы, являющиеся прямыми дочерними элементами <ol id="update"> список.

Если у вас уже есть $li настройте без ">", тогда можно убрать "вложенные" <li> элементы из этого списка с помощью «фильтра»:

var $li = $('ol#update li'); // gets all <li> elements, even the nested ones

// ...

var $notNested = $li.filter('ol#update > li');
// or, if you prefer,
var $notNested = $li.filter(':not(ol#update li ol li)');
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top