gpt4 book ai didi

backbone.js - 绑定(bind)时触发的主干事件

转载 作者:行者123 更新时间:2023-12-04 05:37:33 24 4
gpt4 key购买 nike

我需要将点击事件绑定(bind)到一定数量的特殊 div,应该绑定(bind)哪些 div 仅在运行时知道
所以我想简单地为所有这些特殊的 div 设置一个类并将它们绑定(bind)到“事件”中,但是然后单击其中一个 div 会触发所有 div
然后我尝试在事件中使用变量,但是这些变量只有在运行时才知道,所以事实证明它们在绑定(bind)事件时是未定义的
现在我使用 jQuery 在运行时绑定(bind) Backbone 中的事件,但是每当我初始化 View 时,事件都会立即触发

var RoomNumber = Backbone.View.extend({
el: $('#roomColumn' + this.roomNumber),
initialize: function () {
_.bindAll(this, 'render');
this.user = this.options.user;
this.roomNumber = this.options.roomNumber;
this.render();
//$('#roomNumber'+this.roomNumber).on('click', this.enterBooking());
},
render: function () {
$(this.el).append("<div class = 'roomNumber' id = 'roomNumber" + this.roomNumber + "'>" + this.roomNumber + "</div>");
},
enterBooking: function () {
var slideForm = new SlideForm({
user: this.user,
roomNumber: this.roomNumber,
state: 'book',
singleSchedule: new Schedule()
});
}
});

有人会解释为什么会发生这些吗?以及如何将事件绑定(bind)到动态生成的 div?

(我知道我可能不应该使用这样的主干 View ......但这是要求的一部分)

最佳答案

您的代码有两个问题:

  • 回答您的观点,绑定(bind)时会触发事件,因为您在绑定(bind)时调用事件处理程序。
    $('#roomNumber'+this.roomNumber).on('click', this.enterBooking());应该$('#roomNumber'+this.roomNumber).on('click', this.enterBooking);注意函数调用大括号。
  • 你设置 el 的方式是错误的
    el: $('#roomColumn' + this.roomNumber),在 Backbone 中,el View 的属性在 initialize 之前设置方法被调用。这意味着主干将尝试查找元素 $('#roomColumnundefined')这是意料之中的。相反,您可以通过 el元素作为 View 的选项
        var roomNumber = 3;
    var view = new RoomNumber({
    roomNumber:roomNumber,
    el:$('#roomColumn' + roomNumber)
    });
  • 关于backbone.js - 绑定(bind)时触发的主干事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11730738/

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