Я работаю над небольшим проектом колледжа, который является доброй социальной сетью. Я пытаюсь добавить два варианта Like and Dislike. Все работает нормально, но проблема в том, что если сообщение уже кому-то понравилось, а затем он не нравится, ему будет не нравится публикация, но он не будет отличаться от поста в то же время. Внутри он работает нормально, означает, что если кому-то не нравится сообщение, он будет автоматически отличаться от поста. Но я не могу показать это через ajax/jquery. любезную помощь.
Здесь я просто показываю часть jQuery, в действительности она работает с ajax.
$(".like").click(function(e){
e.preventDefault();
if($(this).hasClass('liked'))
{
$(this).removeClass('liked');
}
else
{
$(this).addClass('liked');
}
});
$(".dislike").click(function(e){
e.preventDefault();
if($(this).hasClass('disliked'))
{
$(this).removeClass('disliked');
}
else
{
$(this).addClass('disliked');
}
});
Вам нужно выбрать другой элемент управления, а затем удалить класс. Ваш HTML довольно прост, поэтому вы можете использовать функцию siblings
чтобы найти правильный элемент...
$(".like").click(function (e) {
e.preventDefault();
if ($(this).hasClass('liked')) {
$(this).removeClass('liked');
} else {
$(this).addClass('liked');
$(this).siblings(".dislike").removeClass('disliked');
}
});
$(".dislike").click(function (e) {
e.preventDefault();
if ($(this).hasClass('disliked')) {
$(this).removeClass('disliked');
} else {
$(this).addClass('disliked');
$(this).siblings(".like").removeClass('liked');
}
});
Поэтому, если я правильно угадываю:
if you click dislike
if it is already disliked
unset disliked
else
'un-like'
set disliked
if you click like
if it is already liked
unset liked
else
'un-dislike'
set liked
если это так, то почему бы вам не "не нравиться" и "не нравится"?
$('.like').bind('click', function(event){
event.preventDefault();
$(this).toggleClass('liked').siblings('.dislike').removeClass('disliked')
});
$('.dislike').bind('click', function(event){
event.preventDefault();
$(this).toggleClass('disliked').siblings('.like').removeClass('liked')
});
довольно просто