2016-04-18 7 views
-1

私がしようとしているのは、グリフィンボックスがあるということです。通知がある場合、そのボックスの色を通知の数で変更します。私はほとんどそこにいると思うが、それはうまくいかない。私は点検したが、CSSは通らない。それでは私がしたことがここにあります。なぜこれがAJAX関数の色を変更していないのですか?

私はそうglyphicon-受信トレイは、カウントして、その色を変更する必要があるナビゲーションバー

<li class="dropdown"> 
<a href="#" class="dropdown-toggle notification-toggle" data-toggle="dropdown" role="button" aria-expanded="false" id="button"> 
<span class='glyphicon glyphicon-inbox' aria-hidden="true"></span> 
<span class="caret"></span></a> 
       <ul class="dropdown-menu" role="menu" id='notification_dropdown'> 

       </ul> 
      </li> 

でこれを持っています。

は、通知カウント== 0、私は他の

  $("#notification_dropdown").addClass('notification'); 

$("#notification_dropdown").removeClass('notification'); 

を持っている場合、私はこのコード

<script> 
    $(document).ready(function(){ 
     $(".notification-toggle").click(function(e){ 
     e.preventDefault(); 
     $.ajax({ 
      type: "POST", 
      url: "{% url 'get_notifications_ajax' %}", 
      data: { 
      csrfmiddlewaretoken: "{{ csrf_token }}", 
      }, 
     success: function(data){ 
      $("#notification_dropdown").html(' <li role="presentation" class="dropdown-header">Notifications</li>'); 
      var count = data.count 
      console.log(count) 
      if (count == 0) { 
        $("#notification_dropdown").removeClass('notification'); 
       var url = '{% url "notifications_all" %}' 
       $("#notification_dropdown").append("<li><a href='" + url+ "'>View All Notifications</a></li>") 
      } else { 
        $("#notification_dropdown").addClass('notification'); 
       $(data.notifications).each(function(){ 
       var link = this; 
       $("#notification_dropdown").append("<li>" + link + "</li>") 
       }) 
      } 
      console.log(data.notifications); 
      }, 
      error: function(rs, e) { 
      console.log(rs); 
      console.log(e); 
      } 
     }) 
     }) 
    }) 
    </script> 

を持っていることを達成し、CSSのために、私はこの

を持っています
#notification_dropdown{ 
} 

#notification_dropdown.notification{ 
    background-color: red; 
} 

あなたが見ているように、色は赤くなるはずですが、トリックはしません。私はグリフコンボックスのどこかにある#buttonを配置する必要があると思うが、わからない。また、ボックスにカウントを表示する方法がわかりません。

私はコンソールで$("#notification_dropdown")を使用している場合は、私が

<ul class="dropdown-menu notification" role="menu" id="notification_dropdown"> <li role="presentation" class="dropdown-header">Notifications</li><li><a href="/notifications/164/?next=/post/test0/">content</a></li><li><a href="/notifications/165/?next=/post/test0/">content</a></li></ul> 

を取得し、私はスタックオーバーフロー、その上にカウント数と色を変更する通知ボックスのようにそれを作るしようとしている - これは可能ですか?

+0

使用 'データ型::「' $の.ajax'設定オプションでjson''

$("#notification_dropdown:visible").removeClass('notification'); 

または

$("#notification_dropdown:visible").addClass('notification'); 

はこれを試してみてください'success'コールバックで' JSON.parse() 'を使って文字列をJSONに手動で解析します。 – Tushar

+1

あなたはconsole.log(count)の値を取得しますか? –

+0

data.countに値があるかどうかを確認しましたか?また、あなたのCSSを#notification_dropdown.notificationの代わりに唯一の.notificationに変更しようとしました。 – brk

答えて

0

glyphiconの色を変更する - あなたは色のプロパティを変更する必要はありませ背景:

#notification_dropdown.notification{ 
    color: red; 
} 
+0

ええ、私はそれを試しました –

+0

グリシコンの色を変更する方法はよく - それはあなたが使用しているセレクタまたはクラスを決定するロジックでなければなりません。このスタイルルールをインラインスタイルルールとしてグリフコンに追加して、色の変更を確認してから、それを選択して修正する方法を試してみてください。 – gavgrif

+0

うん...ありがとうございました...私の頭を包み込みます実際にここに投稿しました:)... –

0

いずれかの要素がありますが、全体のhtmlの「notification_dropdown」同じIDを持つ存在しますか? htmlを調べて、このIDで見つけてください。それは隠された形であるかもしれません。その場合、この可視要素ではなく隠れ要素にCSSが適用される可能性があります。

、はい、次にしようとした場合:

setTimeout(function(){ 
    $("#notification_dropdown:visible").addClass('notification'); 
}, 2000); 
+0

作業していません...あなたは助けてください私... –

+0

コンソールに何かエラーがありますか? AJAXの応答が適切に来ていますか? –

+0

いいえ私はちょうどCSSや何かを取得していない....何も変更されていない...私の推測は私が通知ボックス(グリフコン自体にこれをdoens'tどちらか)にidを設定していたはずだった –

関連する問題