2016-03-22 17 views
0

これで、私のフォロワーリストを見てユーザーのフォローまたはアンフォローを可能にする2つのボタンがあります。たとえば、誰かが既にフォロワーにいるときは、フォローフォルトボタンが表示され、そうでない場合はフォローボタンが表示されます。replaceWith()を使用してボタンを別のものに置き換える

followProfile: function (e) { 
    var personalData = $('#personal-information').serializeObject(); 
    var postParams = { 
     csrfmiddlewaretoken: $.cookie('csrftoken'), 
     personal_data: JSON.stringify(personalData) 
    }; 

    $.post('/follow/', postParams, function(resp) { 
     $(".follow-button").replaceWith($(".unfollow-button").show()); 
    }) 
}, 
unfollowProfile: function (e) { 
    var personalData = $('#personal-information').serializeObject(); 
    var postParams = { 
     csrfmiddlewaretoken: $.cookie('csrftoken'), 
     personal_data: JSON.stringify(personalData) 
    }; 

    $.post('/unfollow/', postParams, function(resp) { 
     $(".unfollow-button").replaceWith($(".follow-button").show()); 
    }) 
}, 

ここに問題があります。誰かに従うためにクリックすると、ボタンが変わり、アンフォローになります。しかし、再びunfollowをクリックすると、ボタンが消えます。私はJavascriptとBackbone.jsの新機能ですので、以前はこのメソッドを使用していませんでした。ボタンが消える理由を教えてください。ここで何が間違っていますか?

明確化:私が呼ぶとき、それは正確に従うことをフォローし置き換え、「アンフォロー」(今では従ってあります)。しかし、ここをクリックすると、「unfollow」ボタンを書く代わりに、ボタンが消えます。

答えて

1

.show()は、.replaceWith()関数が期待するJQueryObjectを返しません。

$.post('/unfollow/', postParams, function(resp) { 
    var followButton = $(".follow-button"); 
    $(".unfollow-button").replaceWith(followButton); 
    followButton.show(); 
}) 
+0

ああ、あなたのポイントは正しいですが、私が.show()を書くと、それはまだ消えています:/私は質問を編集しています。あなたの返信と修正をありがとう。 – waterkinq

+0

私は自分の答えを編集しました。それが役立つかどうかを見てください。 – cani

+0

同じ結果が得られます。まず、フォローをアンフォローボタンに正しく変更しますが、フォローアップを解除するためにフォローを変更することはできません。私はreplaceWith()関数を上書きすると思います。 – waterkinq

0

私はそれを単純に使って解決しました。

$.post('/unfollow/', postParams, function(resp) { 
    document.getElementById('twitter-follow-button').style.display = 'inline'; 
    document.getElementById('twitter-unfollow-button').style.display = 'none'; 

}) 
$.post('/follow/', postParams, function(resp) { 
    document.getElementById('twitter-follow-button').style.display = 'none'; 
    document.getElementById('twitter-unfollow-button').style.display = 'inline'; 

}) 

私はこのボタンを保存する必要があるので、これは私にとってより簡単で優れた解決策だと思います。私が理解する限り、replaceWith()はボタンを保持しません。

多くのありがとうございます。

+0

'document.getElementById ( 'twitter-follow-button') '...理想的には' id'はドキュメント内で一意になりますが、このようなグローバルセレクタをバックボーンプロジェクトで使用するのは悪い習慣です。 –

関連する問題