1

フォロー用とフォロー解除用の 2 つの jquery 関数があり、どちらかをクリックすると反対の単語に変わります。問題は、「フォロー」をクリックすると、本来の「フォロー解除」に変わるのですが、更新しない限り、リンクを再度クリックすることはできません. ここに私の機能があります:

$(function(){
    $('#follow').on('click',function(){
        $.ajax({
            type: 'POST',
            url : 'functions/follow.php',
            data: {follower : $.upnamespace.session_id,
                   user : $.upnamespace.p_id},
            success: function(result) {
                if(result == 'followed'){
                    $('#follow').attr('id','unfollow').text('-Unfollow');
                }
            }
        });
    });
});
$(function(){
    $('#unfollow').on('click',function(){
        $.ajax({
            type: 'POST',
            url : 'functions/unfollow.php',
            data: {follower : $.upnamespace.session_id,
                   user : $.upnamespace.p_id},
            success: function(result) {
                if(result == 'unfollowed'){
                    $('#unfollow').attr('id','follow').text('+Follow');
                }
            }
        });
    });
});

これはリンクの 1 つです。もう 1 つのリンクは、ID が「unfollow」で、テキストが「-Unfollow」であることを除いて同じです。

<a id="follow" class="small button blue" style="color:#fff">+Follow</a>
4

3 に答える 3

2

このようにコードを短くすることができ、変更する必要はありませんID

$(function(){
    $('#follow').on('click',function(){
        var url = $(this).text() == '+Follow' ? 'functions/follow.php' : 'functions/unfollow.php';
        $.ajax({
            type: 'POST',
            url : url,
            data: {follower : $.upnamespace.session_id, user : $.upnamespace.p_id},
            success: function(result) {
                if(result == 'unfollowed'){
                    $('#follow').text('+Follow');
                } else if(result == 'followed') {
                    $('#follow').text('-Unfollow');
                }
            }
        });
    });
});
于 2013-05-27T12:47:39.603 に答える
2

idプロパティを変更することが最善の解決策だとは思いません。

次のようなものを試してください

$(function(){
    $('#follow').on('click',function(){
        var $this = $(this), type = $this.data('followType') || 'follow', follow = type == 'follow';
        $.ajax({
            type: 'POST',
            url : 'functions/' + follow + '.php',
            data: {follower : $.upnamespace.session_id,
                   user : $.upnamespace.p_id},
            success: function(result) {
                if(result == 'followed'){
                    $this.text('-Unfollow').data('followType', 'unfollow');
                } else if(result == 'unfollowed'){
                    $this.text('+Follow').data('followType', 'follow');;
                }
            }
        });
    });
});
于 2013-05-27T12:47:42.370 に答える