Показать сообщение отдельно
  #2 (permalink)  
Старый 28.03.2011, 23:41
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

полчаса возился) заинтересовало.

почему ,интересно,не работает фича через $(el).add(i) ( читай : $.add() ) в цикле ???

хз

я пробовал и так и сяк

в итоге плюнул на кеш ( я собирал элементы в массив,но понял потом, " а нахрена?" )

вот код,с которым таки не (!) получилось.
<div id="some">

<div class="sm_level_1">s</div>
<div class="sm_level_2">s</div>
<div class="sm_level_3">s</div>
<div class="sm_level_4">s</div>
<div class="sm_level_5">s</div>
<div class="sm_level_6">s</div>
<div class="sm_level_7">s</div>
<div class="sm_level_8">s</div>
<div class="sm_level_9">s</div>
<div class="sm_level_10">s</div>
    
</div>

скрипт
var fr = 3, // FROM -> с какого
    to = 5, // TO -> по какой
    pr = ".sm_level_", // префикс класса 
    some = $( document.getElementById('some') )  // кешируем родительский элем

/* 

$(pr+fr++,some) ---> some.find(pr+fr++)

pr+fr++ ----->   .sm_level_3,4,5  . с инкрементиком. удобно. заюзали-увеличили
*/
do $(pr+fr++,some).css('color','red');while(fr<=to)
/*
гонялся всегда за умещением кода в одной строчке... маньяк :)

вот тот же цикл ... по-человечески
*/
for(var i = fr; i<=to;i++) {
       $(pr+i,some).css('color','red');
}


// рабочее,чуть-чуть. отмечает говнюков с третьего ( sm_level_3) по пятый (sm_level_5) красным цветом



только вот "нипонять", как обернуть их

делается это через $.wrap()


............

тьфу ты,етить колотить

мануал


var fr = 3,
    to = 5,
    pr = "sm_level_",
    some = $( document.getElementById('some') )
    
some.find('div').wrap(
                      
function(e){
 
/* 
как получить индекс . sm_level_{NUM} -- этот {NUM}

this ->>> html element

$(this) ->>> jQuery el

$(this).attr('class') ->>> 'sm_level_4'

$(this).attr('class').replace(pr,'') = '4'  (строка)

 parseInt(   $(this).attr('class').replace(pr,'') ) ->>> 4 (циферка)

*/
    var inrange = parseInt(   $(this).attr('class').replace(pr,'') );

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


    inrange = inrange >= fr && inrange <= to;

// true , если больше либо равен 3, но меньше либо равен 5.. т.е. 3,4,5

    return inrange ? "<s></s>":"";
    
    })


получилось так


<div id="some">

<div class="sm_level_1">s</div>
<div class="sm_level_2">s</div>
<s><div class="sm_level_3">s</div></s>
<s><div class="sm_level_4">s</div></s>
<s><div class="sm_level_5">s</div></s>
<div class="sm_level_6">s</div>
<div class="sm_level_7">s</div>
<div class="sm_level_8">s</div>
<div class="sm_level_9">s</div>
<div class="sm_level_10">s</div>
 
</div>


увы, обернуть одним дивчиком не знаю,как.. $.add() не работает. попробуй через неё ( или через селекторы :gt() и :lt() -> через них у меня тоже не получилось ).

на большее у меня азарта не хватает. спать хочется

мб мой сонный мозг чтото пропустил?

буду рад увидеть , как будет решена эта проблема. спокойной ночи


и еще, $.index() я не стал использовать не потому что не знал ( а я не знал))) , а потому что
нумерация начинается с единицы ( а может начинаться с тысячи)!

Последний раз редактировалось melky, 03.04.2011 в 12:57.
Ответить с цитированием