当我将JQuery的hide()函数与Meteor的事件结合起来时,会发生奇怪的错误

时间:2015-12-08 20:27:10

标签: jquery meteor

您好我是JQuery / Meteor的新手,目前遇到了一个奇怪的问题,并希望有人能帮助我。

我在Meteor中创建了一个点击事件,以便用户点击“删除”按钮。按钮,以从数据库中删除在网站上发布的评论。下面是我为click事件编写的代码。

"click .js-del-comment": function(event) {  

  Websites.update(this.databaseID, {$pull: {comments: {
                                            contentID: this.contentID
                                            }}});            
}

上面的代码完全正常,但只要用户点击"删除"按钮,评论很快消失。因此,为了让用户有一个更愉快的过程视图,我将上面的代码与JQuery的hide()函数结合起来,这样当项目/评论被删除时,它会褪色慢慢地。下面的代码是我修改后的代码与JQuery的结合。

"click .js-del-comment": function(event){

        $("#" + this.contentID).hide('slow', function(){

            Websites.update(this.databaseID, {$pull: {comments: {
                                            contentID: this.contentID
                                            }}});
        });         
}

将我的事件代码与JQuery结合后,这些评论/项目通过慢慢淡出从我的网站中删除,但是,每当我刷新浏览器时,那些旧的已删除的评论都会再次出现。如果我没有使用JQuery hide()函数,原始代码工作正常,即使我刷新浏览器后,这些已删除的项目/注释也从未返回。

为什么会出现这个奇怪的问题?

1 个答案:

答案 0 :(得分:0)

this的上下文发生了变化。

尝试绑定回调的上下文:

$("#" + this.contentID).hide('slow', function(){
  Websites.update(this.databaseID, {
    $pull: {
      comments: {
          contentID: this.contentID
  }}});
}.bind(this));