2017-05-10 32 views
0

特定の回答のコメントを読み込むJS関数があります。この考え方は、API関数を呼び出してコメントを返すことです。 問題は、毎回ボタンを押すたびに、同じ正確なコメントのコメントが読み込まれるということです。 私はあなたがコメントを押した後に、より多くのコメントを読み込むことができないことを望んでいます。私はstopPropagationがトリックを行うだろうが、何も起こっていない。ボタンを押した後にボタンの動作が停止する

ことが可能に私はそれを呼び出した後、私はコメントボタンを押したときに、それは私の#showarea

<div class="post-button clearfix"> 
       <div class="post-button clearfix"> 
        <button class="btn icon-chat show-textarea" title="Add a comment on this answer" type="button" data-answer="{$answer['publicationid']}">Comment</button> 
        <div class="textarea"> 
         {include file="comment_form.tpl"} 
        </div> 
       </div> 
      </div> 

comment_form.tpl

$('.comment-form').hide(); 
var commentsFetched = false; 

$("body").on("click", ".show-textarea", function(){ 
    if (commentsFetched) { // check the flag 
     return; 
    } 
    $.getJSON("/controller/api/comments/comment.php", { 
     answerid : answerid 
    }, function (data) { 
     commentsFetched = true; 
     $.each(data, function(i, comment) { 
      console.log(comment); 
      $('.comment-form').append('<article class="tweet-data">' + 
       '<div class="comment-items">' + 
       '<div class="qa-c-list-item hentry comment" id="c3574">' + 
       '<div class="asker-avatar">' + 
       '<a>' + 
       '<img width="40" height="40" src="' + 
       comment.user_photo + 
       '"></a>' + 
       '</div>' + 
       '<div class="qa-c-wrap">' + 
       '<div class="post-button">' + 
       '<button name="" onclick="" class="btn icon-flag" title="Flag this comment as spam or inappropriate" type="submit">flag</button>' + 
       '<button name="" class="btn icon-answers" title="Reply to this comment" type="submit">reply</button>' + 
       '</div>' + 
       '<span class="qa-c-item-meta">' + 
       'commented' + 
       ' 1 day' + 
       ' ago' + 
       ' by ' + 
       '<a style="display: inline" href="" class="qa-user-link url nickname">' + 
       comment.username + 
       '</a> ' + 
       '<span class="qa-c-item-who-points"> ' + 
       '<span class="qa-c-item-who-points-pad">(</span><span class="qa-c-item-who-points-data">140</span><span class="qa-c-item-who-points-pad"> points)</span> ' + 
       '</span> ' + 
       '</span> ' + 
       '</span> ' + 
       '<div class="qa-c-item-content" style="color: #2d2727; font-size: 13px"> ' + 
       '<a name="3574"></a><div class="entry-content">' + 
       comment.body + 
       '</div> ' + 
       '</div> ' + 
       '</div> <!-- END qa-c-item --> ' + 
       '</div> ' + 
       '</div>'); 
     }); 
    }); 

    $('.comment-form').show(); 
}); 

$("body").on("click", ".textarea-ok, .textarea-cancel", function(){ 
    commentsFetched = false; 
    $('.comment-form').hide(); 
}); 

答えて

2

がすでにフェッチかどうかを知るためにフラグを設定クローズすることですコメント。

var commentsFetched = false; 
$("#showarea").click(function() { 
    if (commentsFetched) { // check the flag 
     return; 
    } 

    $.getJSON("/controller/api/comments/comment.php", { 
     answerid : answerid 
    }, function (data) { 
     commentsFetched = true; // set the flag 
     $.each(data, function(i, comment) { 
    ... 

あなたは、おそらく私はあなたが示唆するものでしたし、それは、レプリケーションを停止しますが、それは私が欲しいものではありませんユーザーを視覚的に表示これ以上のコメントは

+0

をロードすることができますを与えるためにボタンを無効にする必要があります。なぜなら私は 'コメントフォーム'を隠すためにキャンセルを押すと、コメントをもう一度押すと、コメントを再度複製するからです。任意のアイデア、@thedude –

関連する問題