У меня есть эта ссылка:
<div id='up_arrow_div'>
<%= link_to "⇑".html_safe, video_votes_path( :video_id => video.id, :type => "up" ), :method => :post, :remote => true, :class => 'up_arrow' %>
</div>
, а также ссылка с нисходящим голосованием, которая отправляет запрос POST и вставляет голос в базу данных.Я пытаюсь настроить стиль так, чтобы он менял цвета при нажатии на него.Вот исходный CSS:
a.up_arrow:link, a.down_arrow:link {
color: black;
text-decoration: none;
font-size: 25px;
margin-left: 7px;
}
#up_arrow_div, #down_arrow_div {
display:block;
background-color:#DFEAF4;
width:30px;
}
CSS создает цветной квадратный div вокруг ссылки в форме стрелки.Тогда у меня есть этот jQuery:
$('a.up_arrow').toggle(function () {
$('#up_arrow_div').css("background-color", "#19558D");
}, function () {
$('#up_arrow_div').css("background-color", "#E9DEDE;");
});
$('a.down_arrow').toggle(function() {
$('#down_arrow_div').css("background-color", "#19558D");
}, function () {
$('#down_arrow_div').css("background-color", "#E9DEDE;");
});
Это, похоже, не работает.Происходит то, что, во-первых, голосование отключается.Кроме того, цвет div меняется один раз, но он не меняется обратно при повторном нажатии.Что я делаю не так и как я могу это исправить?
ОБНОВЛЕНИЕ:
По запросу, здесь сгенерированная разметка HTML:
<div id="voting_div">
<div id="up_arrow_div">
<a href="/video_votes?type=up&video_id=448" class="up_arrow" data-method="post" data-remote="true" rel="nofollow">⇑</a>
</div>
<div id="vote_display">
<p id="votes">0 Votes</p>
</div>
<div id="down_arrow_div">
<a href="/video_votes?type=down&video_id=448" class="down_arrow" data-method="post" data-remote="true" rel="nofollow">⇓</a>
</div>
</div>
ОБНОВЛЕНИЕ 2:
Вот код JS, который я сейчас использую, как объясняется в ответе ниже:
var toggleVoting = function() {
if ($(this).parent().hasClass("voted")) {
return "unvoted";
}
else {
return "voted";
}
};
$('a.up_arrow').click(function() {
$(this).parent().toggleClass(toggleVoting);
});
$('a.down_arrow').click(function() {
$(this).parent().toggleClass(toggleVoting);
});
Поведение этого кода таково, что когда я голосую, в div добавляется класс voted
к нему, и когда я снова голосую, класс voted
удаляется, но класс unvoted
не добавляется.Мне нужно добавить класс unvoted
, когда класс voted
удален.