2017-05-10 8 views
1

私はjavascript/jqueryでいくつかのonclick関数を作っていますが、私はこの問題を解決するのに問題があります。基本的には、私はJQueryを使用し、他の人が作ったプラグインを使わずに5つ星評価システムを作ろうとしています。Clickable font-awesome not working

私はその後、私はmerellyコードを複製せずにクリックした星と以前のすべての1の色を変更しようとしている以下の情報に

function createRating() { 
    var sC = $('#starContainer'); 
    for (var i = 1; i <= MAX_RATING; i++) { 
     sC.append($('<span>').addClass('fa fa-star').attr('id', 'star' + i)); 
    } 
} 

を追加するためのHTMLを持っています。しかし、星のいずれかをクリックしたときにこの関数を呼び出すと、星のいずれかをクリックすると何も起こりません。私は何が間違っているのか分かりません。ここで数時間こだわっています。

$('.fa.fa-star').click(function() { 
    alert("fa star clicked"); 
    var currentStar; 
    var clickedIndex = $('.fa.fa-star').index(this) + 1; 
    for (var i = 1; i <= MAX_RATING; i++) { 
     currentStar = $('#star' + i); 
     if (i <= clickedIndex) { 
      currentStar.css({"color" : "green"}); 
     } else { 
      currentStar.css({"color" : "white"}); 
     } 
    } 
}); 

アラートは何もしないため、クリックが機能していないことがわかりました。

この件に関するお手伝いをお待ちしております。

敬具星のHTMLが行われる前に、Clickイベントが登録されているため、

+0

[代理イベントハンドラ](http://api.jquery.com/on/)を使用すると、イベントバインディングを作成したときに存在しなかった要素のクリックを処理できるようになります。 – Phrogz

答えて

2

あなたのイベントが発射されていません。そのため、イベントをそのイベントに添付することはできません。

あなたはバブル技術を使用してイベントを割り当てる試すことができます。

$('#starContainer').on("click", ".fa.fa-star", function() { 
}); 

これは(それがページの読み込み時に作成されていますと仮定)StarContainer divのにイベントを割り当て、.fa.faのための任意のクリックを探します - スターイベント。

+1

それは本当に問題でした。あなたに感謝しているだけの返事をするのは支配者に反しているが、あなたは本当に私のハムを救った。私はその返事から何かを学びました。 –