Управляйте двумя div на один клик используя this

0

Я работаю над небольшим проектом колледжа, который является доброй социальной сетью. Я пытаюсь добавить два варианта 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');
    }
});

jsFiddle Demo

Теги:

2 ответа

0
Лучший ответ

Вам нужно выбрать другой элемент управления, а затем удалить класс. Ваш 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');
    }
});

Вот ваш пример, обновленный

  • 0
    Вы можете упростить это с помощью функции toggleClass.
  • 0
    @ SteveWellens: Да, я заметил это из другого ответа. Тем не менее, я оставлю это, поскольку думаю, что это делает более понятным, что происходит, сохраняя исходный код таким, какой он есть.
Показать ещё 3 комментария
0

Поэтому, если я правильно угадываю:

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')
});

довольно просто

  • 0
    через php я сделал это. но, как показано в демонстрации, я не могу показать это сразу, используя jQuery. : /
  • 0
    ну, в вашем коде javascript у вас не было кода для «неприязни» или «неприязни». Так что да, это не так много значит :-)
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню