1

我有两个 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');
                }
            }
        });
    });
});

这是其中一个链接,另一个相同,只是 ID 为“取消关注”且文本为“-取消关注”

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

3 回答 3

3

由于最初不存在取消关注,因此您需要使用事件委托

$(document).on('click','#unfollow',function(){
于 2013-05-27T12:42:50.320 回答
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 回答