3

テーマページから投稿に「いいね!」ができるブログテーマに取り組んでいます。次の JavaScript を使用して、tumblr API で投稿に「いいね」を付け、白いハートを赤いハートに変更し、いいねボタンの上に表示される投稿のメモ数を +1 します。正常に動作しますが、ハートボタンをクリックすると赤くなり、投稿が好きになり、メモカウントに+1されるという問題がありますが、すでに好きになったらボタンをクリックし続けることができ、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()関数を使用すると、クリックを 1 回だけトリガーできます。それはそれが設計されたもののようなものです。理想的には、ボディよりも近い .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 に答える