el Child в каждой функции

У меня есть вопросы. Я ищу решение для них. Хочу использовать el с дочерней функцией. Но не сработало. Если я очищаю el, это работает, но тогда у меня есть последний класс элементов.

Скрипт Mootools

 $$('ul#portfolio li, .ce_id').each(function(el) {  
                    if(!el.hasClass(filterVal)) {  
                        el.fade('out').setStyle('display', 'none').addClass('hidden');

                    } else {  
                      el.setStyle('display', 'block').fade('in').removeClass('hidden');
                      $$(el':nth-last-child((4n+4)').addClass('last');
                    } 

Надеюсь, вы, ребята, можете мне помочь. Или невозможно использовать el или VAR вместе с :nth-last-child?

Обновление: но не сработало.

              else {  
               el.setStyle('display', 'block').fade('in').removeClass('hidden');
               el.getElements(':nth-last-child(4n+4)').addClass('last');
             }

Обновление 2:

Вот код Итак, я хочу, чтобы, когда я нажимаю на печать, каждые 4 ли ведьмы не были скрыты, и щелкнула ведьма класса, чтобы получить класс последним. http://jsfiddle.net/6whd9/1/

С наилучшими пожеланиями


person user1898361    schedule 19.01.2013    source источник
comment
JQuery? Я использую MooTools. И я нашел это на сайте Mootools. $$('#myDiv:nth-child(2n)'); Но мне нужен элемент не.   -  person user1898361    schedule 19.01.2013


Ответы (1)


Я немного сокращаю код, но вы не можете обойтись без el в селекторе. Вместо этого вы должны использовать el.getChildren или el.getElements. Вот пример:

$$('#parent > div').each(function(el){
    el.getChildren(':nth-last-child(4n+4)').addClass('last');
});

Вот рабочий пример: http://jsfiddle.net/ZxMUh/

Изменить: из вашего вопроса действительно сложно понять, что работает, а что нет. Однако, если вы попытаетесь анимировать, вы не сможете просто затухать. Вам нужно сначала скрыть это.

$$('#parent div.hidden').fade('hide');


$$('#parent > div').each(function (el) {
    el.removeClass('hidden').fade('in');
    el.getChildren(':nth-last-child(4n+4)').addClass('last');
});

Вот пример: http://jsfiddle.net/ZxMUh/2/

Редактировать (после получения скрипки): в моем примере я думал, что вы изменили n-го дочернего элемента в «li». Проблема в том, что вы не можете сделать это в своем каждом операторе. Делай отдельно.

Вот скрипка при использовании: nth-last-child: http://jsfiddle.net/6whd9/2/

Однако, скорее всего, это не сделает то, что вы хотите, и в этом случае невозможно использовать :nth-child. Вы должны сделать выбор самостоятельно.

 var visable = $$('ul#portfolio li:not(.hidden)').reverse();
 visable.each(function (item, index) {
     // same as 4n + 4
     if (index % 4 == 3) {
         item.addClass('last');
     }
 });

Вот скрипт, демонстрирующий это: http://jsfiddle.net/6whd9/4/ (я добавил последний класс в стиле со сплошной красной рамкой, чтобы было видно)

Надеюсь, я наконец понял ваш вопрос...

person Nils    schedule 19.01.2013
comment
Спасибо за помощь. Но не сработало. Я пробую это, см. Обновление. Но не влияет на класс. addClass и removeclass работают. У меня есть ‹li› с таким классом, как печать, веб-дизайн и корпоративный дизайн. И навигация, которая отправляет filterVal (var), чтобы скрыть или показать элемент ‹li›. И мне нужно последнее, потому что в строке 4 элемента, и когда некоторые из них установлены, не отображают ни одного, мне нужен .last в другой позиции. - person user1898361; 20.01.2013
comment
Итак, вот jsfiddle.net/6whd9/1 . Ок попробую еще раз. :) Я хочу, когда я нажимаю на печать, чтобы каждые 4 ‹li› ведьмы не были скрыты, чтобы получить класс последним - person user1898361; 20.01.2013
comment
ОК, ТЕПЕРЬ ЭТО РАБОТАЕТ! Большое спасибо. я меняю reverse() на sort(). jsfiddle.net/6whd9/5 . Итак, еще раз, что я хочу, и теперь работа. Установите каждые 4 класса li, ведь последняя ведьма не скрыта, потому что у меня есть все li margin-right, и я очищаю это в li с последним классом. - person user1898361; 20.01.2013