gpt4 book ai didi

javascript - 主干事件不会在添加到 DOM 的新元素上触发

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:19:55 24 4
gpt4 key购买 nike

我结合使用了 Handlebars 和 Backbone。我有一个“容器” View ,它有一个数组来保存 subview 。每当我添加新 View 时,都不会绑定(bind)点击事件。

我的帖 subview :

Post.View = Backbone.View.extend({
CommentViews: {},
events: {
"click .likePost": "likePost",
"click .dislikePost": "dislikePost",
"click .addComment button": "addComment"
},
render: function() {
this.model.set("likeCount", this.model.get("likes").length);
this.model.set("dislikeCount", this.model.get("dislikes").length);
this.$('.like-count').html(this.model.get("likeCount") + " likes");
this.$('.dislike-count').html(this.model.get("dislikeCount") + " dislikes");

return this;
}, ...

我在“容器” View 中的回调代码创建了一个新的主干 View ,将其附加到 Handlebars 模板并将其显示在页面上:

success: _.bind(function(data,status,xhr) {
$(this.el).find("#appendedInputButton").val('');
var newPost = new Post.Model(data);
var newPostView = new Post.View({model: newPost, el: "#wall-post-" + newPost.id});
var source = $("#post-template").html();
var template = Handlebars.compile(source);

var html = template(newPost.toJSON());
this.$('#posts').append(html);
newPostView.render();
this.PostViews[newPost.id] = newPostView;
}, this), ...

不确定发生了什么,但最初运行此类代码是为了设置页面(没有 Handlebars ,因为 html 是在服务器端呈现的)并且所有事件都正常工作。如果我重新加载页面,我也可以喜欢/不喜欢帖子。

我错过了什么?

最佳答案

我没有看到您将 newPostView.render().el 附加到 dom。还是我遗漏了什么?

关于javascript - 主干事件不会在添加到 DOM 的新元素上触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13199414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com