将.data放到.this对象

时间:2015-08-20 10:39:41

标签: javascript jquery laravel this

我在facebook上有像墙一样的东西。每篇文章都有以下评论。 我想要做的是编辑评论选项。 它用textarea格式替换当前评论,并在接受后显示新评论。 按钮不能很好地工作。它应该是动态的(无需刷新网站即可工作)。但是我遇到了一些困难。编辑链接在其他一些注释下打开textarea或者在textarea框中显示第一个注释(新的应该出现...)我现在要做的是将.data()固定到“this”按钮和它将包含新的评论文本,因此我将能够动态地将其读取到开头的textarea。我并不完全确定我在做什么,而且我不确定使用.this,但我希望你能以某种方式帮助我!警报显示“未知数据”。是否有更好的解决方案不需要js中的主级技能?

<a href="#!" class="editButton" onClick="editComment({{$comment->h_id}}, `{{$comment->f_text}}`)">

<script> 
function editComment(id, text){

    var thisId = "#" + id;
    $(thisId).replaceWith("<form class='newCommentForm'>\n\
                          <textarea id='newComment'>" + text + "</textarea>\n\
                          <input type='button' id='submit' value='save'>\n\
                          </form>");

          $('#submit').click(function() {

      var newComment =  document.getElementById('newComment').value;               
              $.ajax({
                  type: 'get',
                  url: '/editcomment',
                  data: {newComment: newComment,
                                 id: id},

                  success:function(){
                           $(".newCommentForm").replaceWith("<span id='" + id + "' class='limitedText shorter' style>" + newComment + "</span>");
                           $(".editButton", this).data("PinComment", "newComment");
                           alert($(".editButton", this).data("PinComment"));
                         },
                  error:function(){
                           alert('error');
                         }
              });                     
          });


}
</script>

1 个答案:

答案 0 :(得分:0)

在你的ajax调用中,this不再引用DOM元素。

<强>编辑:

首先将评论对象放在变量

$thisComment = $(thisId);

然后改变:

$(".editButton", this)

成:

$(".editButton", $thisComment)