2012-05-30 2 views
0

Я пытаюсь написать каждую функцию, которая смотрит на каждый элемент списка, а затем внутри этого элемента на каждый промежуток, применяя некоторые css к каждому диапазону однозначно.Объект jQuery внутри массива?

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

http://jsfiddle.net/anthonybruno/9sKNZ/2/

Любые идеи?

Редактировать - Я понимаю, что это похоже на задание для имен классов, но я упростил тип css, который я пытаюсь использовать только для этого примера. Позже я буду передавать более сложные css, которые будут полагаться на другие значения, такие как scrollTop и viewportHeight.

+0

Я не совсем понимаю. Какой цвет должен быть «spanOne»? «розовый» или «фиолетовый»? Почему массив с вещами? Я не понимаю ... Я имею в виду, если это css, почему бы не установить его в таблице стилей css, и если вам нужно изменить стили, используйте классы с 'addClass'' removeClass' toggleClass' – elclanrs

+0

Идея в том, что первый элемент списка , в пределах того, что первый пролет имеет размер шрифта жирным шрифтом, второй элемент списка сначала должен быть фиолетовым, третий элемент списка должен быть розовым. Я упростил css в этой демонстрации. Конечный код будет содержать другие значения, такие как позиции прокрутки. –

+0

Использовать класс css? Этот пример нечетный ... Есть такие имена, как spanOne и т. Д., Но сами простоя не имеют имен или идентификаторов. Вы можете использовать селекторы классов для динамического добавления или удаления других классов CSS. Попытка сделать это способ, показанный в вашем примере, должен быть хрупким. –

ответ

0

Во-первых, это будет лучше, если вы измените свое items как следующее:

var items = [ 
    [ 
    'font-weight: bold', 
    'text-decoration: underline', 
    'text-transform: uppercase', 
    ], 
    [ 
    'color: purple', 
    'color: yellow', 
    ], 
    [ 
    'color: pink' 
    ] 
    ]; 

$(document).ready(function() { 
    $('li').each(function(liIndex, li) { 
     $('span', this).each(function(index, el) { 
      var curCSS = items[liIndex][index].split(':'); 
      $(this).css(curCSS[0], curCSS[1]) 
     }); 
    }); 
}); 

DEMO 1

Если вы не хотите, чтобы изменить структуру items, попробуйте следующее:

var items = [ 
    { 
    spanOne: 'font-weight: bold', 
    spanTwo: 'text-decoration: underline', 
    spanThree: 'text-transform: uppercase'}, 
{ 
    spanOne: 'color: purple', 
    spanTwo: 'color: yellow'}, 
{ 
    spanOne: 'color: pink'} 
]; 

$(document).ready(function() { 
    var ref = ['spanOne', 'spanTwo', 'spanThree']; // an array to make reference 
    $('li').each(function(liIndex, li) { 
     $('span', this).each(function(index, span) { 
      var curCSS = items[liIndex][ref[index]].split(':'); 
      $(this).css(curCSS[0], curCSS[1]) 
     }); 
    }); 
}); 

DEMO 2

1

IT проще, если изменить структуру пунктов .. смотри ниже,

var items = [['font-weight: bold', 
    'text-decoration: underline', 
    'text-transform: uppercase'], 
    ['color: purple', 'color: yellow'], 
    ['color: pink']]; 

$(document).ready(function() { 
    $('li').each(function(liIdx) { // For each list item 
     var curCss = items[liIdx]; 
     $(this).find('span').each(function(idx) { 
      var cssStyle = curCss[idx].split(':'); 
      $(this).css(cssStyle[0], cssStyle[1]); 
     }); // Each span should get unique css value    
    });  
}); 

DEMO

Смежные вопросы