2016-09-02 7 views
0

jQueryコードを書くためにもっと整然とした方法があるのではないかと心配しています。 私はこのインターネットを探していましたが、例は見つけられません。jQuery複数のセレクタを持つ1つのクラス名

異なるCSS設定の異なるセレクタを持つ3つの重複したクラス名があります。私はそれがきれいにコーディングされているかどうか知りたいです。

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スパンがありますが、SCSSではなくjQueryコードを知りたいと思っています。とにかくありがとう。 – hasmai

+0

申し訳ありませんが、あなたの質問が正しく理解できませんでした。私はあなたの質問の美しさを知らなかった。私は要素にclassnameを追加してCSSを使って子供たちをスタイリングしようとしています。 –

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

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

} 
関連する問題