2017-05-10 5 views
0

Ich habe eine JS-Funktion, die die Kommentare einer bestimmten Antwort lädt. Die Idee ist, eine API-Funktion aufzurufen und die Kommentare zurückzugeben. Das Problem ist, dass jedes Mal, wenn ich den Knopf drücke lädt es die Kommentare, die gleichen genauen Kommentare. Ich möchte etwas, dass Sie nach dem Drücken von Kommentar können Sie keine weiteren Kommentare laden. Ich würde zwar stopPropagation würde den Trick tun, aber nichts passiert ist.Stoppt die Tastenaktion nach dem Drücken

Ist es möglich, wenn ich den Kommentar-Taste drücken, nachdem ich es nennen, es ist mein #showarea gesetzt schließt

<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(); 
}); 

Antwort

2

eine Flagge zu wissen, ob Sie bereits die geholt Bemerkungen.

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) { 
    ... 

sollten Sie wahrscheinlich die Schaltfläche deaktivieren Sie Ihre Benutzer eine visuelle Anzeige nicht mehr Kommentare

+0

geladen geben kann ich tat, was Sie vorschlagen, und es macht die Replikation beenden, aber es ist nicht das, was ich will. Denn wenn ich cancel drücke, um mein Kommentarformular zu verbergen, und wenn ich Comment erneut drücke, wird der Kommentar erneut repliziert. Irgendeine Idee, @thedude –

Verwandte Themen