2016-04-05 8 views
0

クラスのクリックで各行の画像を変更したいネストされたレコードがありますが、現在のスクリプトでは何も起こりません。ネストされた行クラスを変更するonclick

$(document).ready(function() { 
    $(".star_gray").click(function() { 
     $(this).toggleClass('star_color'); 

    }); 
}); 

HTML

<a href="#"> <div class="star_gray"></div></a> 

CSS

.star_color { 
    position:absolute; 
    background-image: url(../img/star_liked.png); 
    width: 24px; 
    height: 23px; 
    background-repeat: no-repeat; 
    background-position: center; 
    right:5px; 
} 

.star_gray { 
    position: absolute; 
    background-image: url(../img/star_not_liked.png); 
    width: 24px; 
    height: 23px; 
    background-repeat: no-repeat; 
    background-position: center; 
    right: 5px; 
} 
+0

あなたのCSSのstar_color .star_grayスタイル後.star_colorスタイルを置き、star_grayの前に立っています。 @ Pimskieの答えが正しい解決 – AlmasK89

答えて

2

は、画像以外から、それは全く同じですが、以来、CSSの最適化:

.star_gray { 
    position: absolute; 
    background-image: url(../img/star_not_liked.png); 
    width: 24px; 
    height: 23px; 
    background-repeat: no-repeat; 
    background-position: center; 
    right: 5px; 
} 

.star__gray.star_color { 
    background-image: url(../img/star_liked.png); 
} 

画像をオーバーライドする必要があり、余分な.star_colorクラスを追加することによって。

編集:フィドルと派手なイメージを持つ今

https://jsfiddle.net/3mq5rarh/1/

0

は私がしようとします:

.star_color { 
    background-image: url(../img/star_liked.png) !important; 
} 

何が起こるかというとstar_colorクラスを切り替えた後、あなたのdiv要素がBECOということです私<div class="star_grey star_color">。したがって、あなたのstar_colorの背景イメージは、!importantを追加することによって、star_greyのイメージを上書きします。

+0

それは動作しませんでした – neiza

+0

ああ、私の悪い、画像は 'star_liked.png'ではなく' star_not_liked.png'でなければなりません。今働いているはずです。 – donkey

+0

絶対に '!important'を使う必要はありません。 – Pimmol

関連する問題