2011-08-10 21 views
1

私はまでそれは、項目の評価を示すだろう、これまでのところ、私はオンとオフの2つのクラスを持って、5つ星の合計があり、0から評価システムを作るためにjQueryの評価システム

をしようとしています人は、私がこれまでのところ唯一、誰でもすべての始まりをhilights、すべてを台無しに

$('#stars').mouseover(function() { 
     $(this).children().prevAll().andSelf().attr('class', 'on'); 
    $(this).nextAll().attr('class', 'on'); 
    }); 

を持って、それは前の星をHILIGHTと電流定格を隠すだろう、彼らの上に

<div id="stars"> 
<div class="on"></div> 
<div class="on"></div> 
<div class="on"></div> 
<div class="off"></div> 
<div class="off"></div> 
</div> 

JSを置きました助けることができる?あまりにも多くの時間働いて、それを働かせることができません..

ありがとう!

+0

参考コメント。私はシンプルなソリューションを探しています。私が扱ったほとんどのものは、JSでイメージを使用しているか、jqueryを大量に持っています。 –

+0

あなたが何故これをすべてゼロからやっているのか説明したことがないので、特に皮肉の必要はありません。 PPriceのコメントは、完全に機能している/テスト済みのプラグインにリンクしているので、実際に役立ちます。 – Sparky

答えて

3

あなたがクリックする前にプレビューとしてこれを使用している場合は、あなたがこのようなホバー機能を使用することもできます。あなたはそれを見ることができる場所

$('#stars .star').hover(
    function() { 
     $(this).prevAll().andSelf().addClass('on'); 
     $(this).nextAll().removeClass('on'); 
    }, 
    function() { 
     $(this).parent().children().removeClass('on'); 
    } 
); 

このjsFiddleでHTMLに行きます作品:http://jsfiddle.net/jfriend00/aRTzQ/

それはオブジェクト上の他のクラスを持っているあなたに多くの柔軟性を提供し、より読みやすいように私もaddClass()removeClass()を使用して直接ではなく、属性を操作することをお勧めしたいです。

クリックをスティッキーにして、その設定を記憶するには、http://jsfiddle.net/jfriend00/QxADg/のようなものを使用できます。対応するCSS/HTMLはフィドルにあります。

$('#stars .star').hover(
    function() { 
     $(this).prevAll().andSelf().addClass('preview'); 
     $(this).nextAll().removeClass('preview'); 
    }, 
    function() { 
     $(this).parent().children().removeClass('preview'); 
    } 
); 

$('#stars .star').click(function() { 
    $(this).parent().children().removeClass('on'); 
    $(this).prevAll().andSelf().addClass('on'); 
}); 

$('#stars').hover(
    function() {$(this).addClass("inPreview");}, 
    function() {$(this).removeClass("inPreview");} 
); 
+0

を参照してください。これは完璧に機能しますが、すでに負荷がオンまたはオフの状態になっています。これを修正する方法はありますか?確かにそれらのいくつかは、ホバーの前に出入りしているので –

+0

あなたはそれがより詳細に動作する方法を記述する必要があります。今、これは「プレビュースタイル」のコードです。初期状態を表すものではなく、状態をロックするためのメカニズム(クリックなど)もありません。あなたはどのようにすべてのものを動作させるかを説明しなければならないでしょう。 – jfriend00

+0

こんにちは、申し訳ありませんが、サンプルの中のクラスの表示と非表示を確認した場合、コードの読み込み方法は星の数によって異なりますが、ユーザーがマウスオーバーしてコードを実行できるようにするしかし、もし彼らが同じ負荷状態を表示する星からマウスを動かすと、彼らはクリックしないでください(私は後でハンドルを追加します)、星をハイライト、助けますか?ありがとうございました! –

2

多くのプラグインがあります。例えば、1つのPPriceがリンクしています。何らかの理由であなたのニーズを満たしていない限り、それが良い方法だと私は他の人が同意します。

このコードを機能させたい場合や、学習のためにこれをやっている場合は、これはあなたがやろうとしていることでしょうか?

「星印」(ボックス)にカーソルを合わせると、色の変化を確認できます。

http://jsfiddle.net/pW3Sn/

$('#stars > div').mouseover(function() { 
     $(this).prevAll().andSelf().attr('class', 'on'); 
     $(this).nextAll().attr('class', 'off'); 
}); 
+0

アウト機能をどのように設計すればよいですか?私が投票しなかった場合、私はマウスを遠ざけましたか? –

+0

http://jsfiddle.net/pW3Sn/1/ –

1

実際には純粋なCSSを使用して実装できます。

HTMLコード:

<div id="stars"> 
    <div class="star"> 
     <div class="star"> 
      <div class="star"> 
       <div class="star"> 
        <div class="star"></div> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

とCSS:

#stars { 
    height: 16px; /* height of stars block */ 
} 
#stars .star { 
    height: 16px; /* height of one star */ 
    padding-left: 16px; /* width of one star */ 
    background-image: url('http://url.to.your.star.image'); 
    float: left; 
} 
#stars .star:hover, 
#stars .star :hover { 
    background-position: 0px -16px; /* toggle image */ 
} 

作業例:http://jsfiddle.net/4CfzD/