3

我正在开发一个博客主题,您可以在其中喜欢主题页面中的帖子。它使用以下 javascript 通过 tumblr API 点赞帖子,将白心更改为红心,并将帖子注释计数 +1,显示在点赞按钮上方。它工作正常,但我有一个问题,当您单击心形按钮时,它会变成红色,喜欢帖子,并且对笔记计数 +1,但是一旦它已经被喜欢,您可以继续单击该按钮并且它会不断添加一个到笔记计数。任何人都可以帮我做到这一点,所以它是一个只能工作一次的功能,例如:有人点击心形按钮,它变成红色,在音符计数上加一个,然后完成。

$(function() {    
        $('.likepost').live('click', function() {
            var post = $(this).closest('article');
            var id = post.attr('id');
            var oauth = post.attr('rel').slice(-8);
            var count = parseInt($("#note_count_"+ id).text());
            var like = 'http://www.tumblr.com/like/'+oauth+'?id='+id;
            $('#like-it').attr('src', like);
            $(this).css({"background" : "url(http://static.tumblr.com/uiqhh9x/JYdlzwvnx/like2.png)"});
            $("#note_count_"+ id).text(count+1);
            return false;
        });
    });

顺便说一句,它在http://blog.jamescharless.com/上运行。您必须登录到 tumblr 才能使脚本生效。

4

2 回答 2

4
$("body").one("click", ".likepost", function() {
//your code here
});

通过使用.one()函数,您只允许触发一次点击。这就是它的设计目的。理想情况下,您希望使用 .likepost 的父级而不是主体,但最坏的情况是您可以只使用主体作为父级。

于 2012-08-24T01:13:50.293 回答
1

您可以取消绑定点击事件。

$(function() {    
        $('.likepost').live('click', function() {
            var post = $(this).closest('article');
            var id = post.attr('id');
            var oauth = post.attr('rel').slice(-8);
            var count = parseInt($("#note_count_"+ id).text());
            var like = 'http://www.tumblr.com/like/'+oauth+'?id='+id;
            $('#like-it').attr('src', like);
            $(this).css({"background" : "url(http://static.tumblr.com/uiqhh9x/JYdlzwvnx/like2.png)"});
            $("#note_count_"+ id).text(count+1);

            // unbind
            $(this).unbind('click');

            return false;
      });
});
于 2012-08-24T01:11:40.563 回答