el Дете във всяка функция

Имам въпрос. Търся решение за тези. Искате ли да използвате 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 li да не е скрит и да има класа, който щракна, да получи класа последен. 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. Така че отново това, което искам и сега wokr е. Задайте на всеки 4 li клас последната вещерка не е скрита, защото имам всички li margin-right и изчиствам това при li с последния клас. - person user1898361; 20.01.2013