JQuery: задержать проблему с функцией каждого

0

функция задержки не работает с каждым.

то, что я делаю, - это когда пользователь нажимает кнопку закрытия, сначала затухает всплывающее окно, а затем удаляет атрибут стиля из всех li.

проблема - это затухание до того, как popup fadeout атрибут style активирует действие, поэтому я использовал задержку для замедления события removeAttr. но получить некоторые проблемы с кодом..

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

   jQuery('.clsbb').click(function(){
   jQuery('.new-rows').fadeOut(3000);
   jQuery('.products li').each(function(index){

    jQuery(this).delay(1000 * index).removeAttr('style');
     });
       });

   <div class="clsbb">close</div>
   <ul>
      <li style="margin-top:10px;">row2</li>
       <li style="margin-top:10px;">row2</li>
        <li style="margin-top:10px;">row2</li>
         <li style="margin-top:10px;">row2</li>
           <li class="new-rows">popup</li>
   </ul>

нужна помощь для всплывающего окна fadeout, затем removeAttr

http://jsfiddle.net/xm5LE/2/

Теги:

2 ответа

1
Лучший ответ

Используйте complete аргумент в fadeout:

jQuery('.new-rows').fadeOut(3000, function(){
    // this code will be called after the animation completes
    jQuery('.products li').removeAttr('style');
});

[править] полное решение:

<div class="clsbb">close</div>
<ul class="products">
    <li style="margin-top:10px;">row2</li>
    <li style="margin-top:10px;">row2</li>
    <li style="margin-top:10px;">row2</li>
    <li style="margin-top:10px;">row2</li>
    <li class="new-rows">popup</li>
</ul>

jQuery('.clsbb').click(function () {
    jQuery('.new-rows').fadeOut(3000, function () {
       jQuery('.new-rows').remove();
       jQuery('.products li').removeAttr('style');
    });
});

играть на скрипке

  • 0
    Как я могу использовать каждый в функции затухания?
  • 0
    Я читаю ваш вопрос слишком быстро. Исправленный.
Показать ещё 5 комментариев
0

Вы можете добиться этого с помощью методов обратного вызова:

jQuery('.new-rows').fadeOut(3000, function(){
  // Use callback method.
  jQuery('.products li').removeAttr('style');  // Not sure why you have used 1000 * index. Use it here as well if required.
});

Редактировать, как Джек Торрис
jQuery('.products li').removeAttr('style'); это удалит стиль из всех li, а не только один. Но если вы все еще хотите использовать.each

jQuery('.new-rows').fadeOut(3000, function(){
  // Use callback method.
  jQuery('.products li').each ( function(){  $(this).removeAttr('style'); } );
});
  • 0
    jQuery ('. products li'). removeAttr ('style'); он удалит атрибут только из одного li .. можно ли использовать каждый из них в функции исчезновения?
  • 1
    @JackTorris jQuery('.products li').removeAttr('style'); Products jQuery('.products li').removeAttr('style'); это будет удалить стиль из всех литий не только один. Но если вы все еще хотите использовать .each, посмотрите мой отредактированный ответ.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню