2016-09-02 3 views
0

Мое кодирование работает нормально, просто интересно, есть ли более аккуратный способ написать код jQuery? Я искал этот интернет, но не нашел примеров.jQuery одно имя класса с несколькими селекторами

Существует три дублированных имени класса с разными селекторами, имеющими разные настройки CSS. Я хотел бы знать, есть ли для этого чистое кодирование.

if ($(this).hasClass('toggle')) { 


    $(".toggle > span:first").css({ 
     // something... 
    }); 

    $(".toggle > span:nth-child(2)").css({ 
     // something... 
    }); 

    $(".toggle > span:last").css({ 
     // something... 
    }); 

} 

Есть ли у SCSS способ? Как ниже

.toggle { 
    span { 
     &:first-child { // something... } 
     &:nth-child(2) { // something... } 
     &:last-child { // something... } 
    } 
} 

Спасибо, что нашли время, чтобы изучить это.

ответ

2

Вы можете использовать .end()

$(".toggle") 
.children("span:first").css({"color":"blue"}) 
.end() 
.children("span:nth-child(2)").css({"color": "green"}) 
.end() 
.children("span:last").css({"color": "red"}); 

Или используйте .filter()

$(".toggle") 
.children("span") 
.filter(":first").css({"color":"blue"}) 
.end() 
.filter(":nth-child(2)").css({"color": "green"}) 
.end() 
.filter(":last").css({"color": "red"}); 
+0

Ваше решение было идеально. Я думаю, что проверка этого вопроса также может дать хорошую идею. http://stackoverflow.com/questions/251814/jquery-and-organized-code/255222#255222 – mayk

0

Вы можете перебирать на них:

var i = 0; 
$(".toggle span").each(function($obj) { 
    console.log('Now i is ' + i); 
    console.log($obj); 
    switch (i) { 
     case 0: 
     //do something 
     break; 
     //and so on, or call a function with obj and i. 
    } 

    i++; 
}); 

Вы также можете добавить data-id или data-anything к классам.

0

Нет, это не похоже.

if ($(this).hasClass('toggle')) {  

    $(".toggle > span:first").css({ 
     // something... 
    }); 

    $(".toggle > span:nth-child(2)").css({ 
     // something... 
    }); 

    $(".toggle > span:last").css({ 
     // something... 
    }); 

} 

подобен:

.toggle { 
    > span { 
     &:first-child { // something... } 
     &:nth-child(2) { // something... } 
     &:last-child { // something... } 
    } 
} 
+0

К сожалению, я пропустил к dd span, но я имею в виду, хочу знать код jQuery, а не SCSS. Спасибо, в любом случае. – hasmai

+0

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

1
if ($(this).hasClass('toggle')) { 

    $('.toggle > span') 
     .first().css({ 
      // something... 
     }) 
     .end().eq(2).css({ 
      // something... 
     }) 
     end().last().css({ 
      // something... 
     }); 

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