1

こんにちは 私は現在、ユーザーが投稿を送信して表示できる「フォーラム」を作成しています。コメントを追加するオプションが欲しいです。

私はクライアント側ですべてを行っています。

フォーラムを生成するコードは次のとおりです。

$.get(url, page, function(data){
      $("#forum").html("");
      for(var i in data)
      {
        $("#forum").append(buildForumEntry(data[i]));
      }
    });

// Builds the forum entry
  function buildForumEntry(post)
  {
    var titleAndType = '<div><span class="forum-title">'+post.title+'</span>'+buildType(post.type)+'</div>';
    var author =  "<div class=\"forum-author\">By: "+post.author+" on "+formatDate(post.date)+"</div>";
    var body =    "<pre>"+post.body+"</pre>";
    var comment = "<div class=\"forum-comment\"> <div class=\"btn-group\"><a class=\"btn btn-mini btn-primary\" role=\"button\" data-toggle=\"modal\" id=\"btn-forum-comment\"><i class=\"icon-comment icon-white\"></i> comment</a></div></div>";
    var footer =  "<hr style=\"border-top: 1px dotted #b0b0b0;border-bottom: 0px\">";
    var entry = titleAndType+author+body+comment+footer;
    return entry;
  }

コメントボタンをクリックすると、投稿の情報を取得するにはどうすればよいですか? また、このメソッド呼び出しで:

// Button comment
  $("#btn-forum-comment").click(function() {
    alert("clicked");
  });

「id=btn-forum-comment」の種類が複数あるため、これは機能しません。クラスを使用する必要がありますか?もしそうなら、サーバーに投稿するときに正しいエントリを更新できるように、投稿のタイトルをより多く取得するにはどうすればよいですか。

更新: 生成されたフォーラムからクラスが機能していません。ボタンのクリックがトリガーされません。何か案は?

var comment = '<div class="btn-group"><a class="btn btn-mini btn-primary btn-forum-comment" id="btn-forum-comment-'+post._id+'"><i class="icon-comment icon-white"></i> comment</a></div>';

// Button comment
  $(".btn-forum-comment").click(function() {
    // now you know the id of clicked comment, so you can rewrite this with code which will open a form to answer exactly this comment
    console.log("clicked");
    alert($(this).attr('id')+" clicked"); 
  });

クリックに問題があります。動的読み込みで何かをする必要があると思います。クラスをハードコードされたhtmlに適用すると、機能します。しかし、ダイナミックな感謝ではありません。

UPDATE2: 将来のユーザーのために更新します。デリゲート機能を使用する必要がありました

$("#forum").delegate(".btn-forum-comment", "click", function() {
    console.log("clicked");
    alert($(this).attr('id')+" clicked");     
  });
4

3 に答える 3