使用'this'一键操作两个div

时间:2014-04-17 13:08:37

标签: jquery

我正在从事一个有点社交网络的小型大学项目。我试图添加两个选项Like和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 :(得分:0)

您需要选择其他控件,然后删除该类。您的HTML非常简单,因此您可以使用siblings function查找正确的元素...

$(".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');
    }
});

Here is your example updated

答案 1 :(得分: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')
});

相当简单