私のサイトにユーザーの評判のシステムを実装しようとしています。だから、あなたが彼がやりとりするたびに(例えば、彼がコメントをするたびに)、ユーザーの名前の後にrep番号を見ることができます。また、ユーザーの評判を変える投票システムもあり、私はその変更を反映するために担当者番号を欲しい。だから私はそのユーザーの新しい担当者番号を返すajaxを介してファイルを呼び出しています。 HTML/PHPファイル(彼はポストをした場合)、最初のインスタンスのようなものです:.replaceWith()は一度だけ動作します
echo '<div class="rep_user_id" id="rep_user_id_'.$posts_row['userid'].'"> '.$posts_row['user_rep'].'</div>';
、その後、(彼がコメントをした場合):
:echo '<div class="rep_user_id" id="rep_user_id_'.$com_row['userid'].'">'.$com_row['user_rep'].'</div>';
私にこれを与えるの両方その後
<div class="rep_user_id" id="rep_user_id_110">293</div>
JS:
function change_reps() {
var userid = $('.rep_user_id').attr('id').replace('rep_user_id_','');
$.ajax({
url: "vote/get_reputation.php",
data: "userid="+userid,
success: function(server_response){
$("body").ajaxComplete(function(event, request){
var reputation = server_response;
$('#rep_user_id_'+userid).replaceWith(''+reputation);
$('#rep_user_id_'+userid).effect("highlight", {color:'red'}, 1000);
}); } }); }
この関数は、別のajaxが成功した後(repとvoteを更新するために)呼び出されます。それで、これから何が効いているのです:任意の矢印をクリックすると、投票カウンタが上下に表示されますが、ユーザー担当者が最初のインスタンスのみを変更する(投稿)ことがわかります。なぜそれは一度だけ変化し、文書全体では変化しないのですか?コメントセクションが別のファイル(インクルード付き)から呼び出されることは何もしていますか?この効果はすべての場合に有効です。 お手伝い願います。ありがとう
編集:私は自分自身を非常にうまく説明していないことを知ったので、もう少しの行を追加しています。問題は、同じIDとクラスを持つ複数の要素を1回だけ変更することができないことです(1つの要素を複数回変更するのではなく)。だから、私は293回、ページ全体に何度も出てきましたが、コードは1つの要素だけを変更しています!
$("body").on("click", ".vote_com_up", function(){
var com_id = $(this).attr('id').replace('vote_com_up_','');
$.ajax({
url: "vote/comment_vote.php",
data: "com_action=2&com_id="+com_id,
success: function(server_response){
$(".vote_com_number").ajaxComplete(function(event, request){
if(server_response == 'voted')
{ alert("Ya has votado en este post!");}
else{
var new_com_votes = server_response;
$("#vote_com_number_"+com_id).html(+new_com_votes);
} }); }
}).done(function() {
change_reps();
});
return false;
});
は私が欲しいものを表示するために、小さなjsfiddleをした: これはchange_reps()をトリガーするものです
SOLUTION:ブライアンNaegeleは正しかった:私はクラスが必要なの代わりに、 ids。
のように聞こえるstackoverflow :)コードをリファクタリングするだけです –
もっとコードを投稿できますか? change_reps()を呼び出すのは何ですか? –