gpt4 book ai didi

javascript - 如何将事件绑定(bind)到动态创建的主干中的 'el'?

转载 作者:行者123 更新时间:2023-11-29 22:16:28 25 4
gpt4 key购买 nike

我在使用 backbone 将事件绑定(bind)到动态创建的元素时遇到了一些问题。

这里是生成元素的主干 View 的代码。 ('.modal')

var MakeModalView = Backbone.View.extend({
el: '#btn-make-modal',

events: {
'click': 'makeModal'
},

makeModal: function () {
$('body').html('<div class="modal"><div class="modal-close">&times;</div>Close me! I\'m a modal!</div>');
}
});
new MakeModalView();

这是控制动态创建元素的 View :

var ModalView = Backbone.View.extend({
el: '.modal',

events: {
'click .modal-close': 'closeModal'
},

closeModal: function () {
this.$el.remove();
}
});
new ModalView();

我遇到的问题是控制动态创建的元素 (ModalView) 的 View 没有将事件绑定(bind)到该动态元素。 ('.modal')

如何将元素绑定(bind)到主干中动态创建的“el”?

我查看了以下解决方案:

Backbone Dynamically created 'el' not binding events

How do you create Backbone views with an 'el' that was dynamically created?

但我似乎仍然无法弄清楚如何将事件附加到动态元素。

我创建了一个 fiddle 来演示这种行为是如何工作的。 http://jsfiddle.net/6wzzk/3/

最佳答案

当您实例化一个 Backbone.View 时,Backbone 会尝试获取它的 el 并进行事件订阅(委托(delegate))。因此,如果 el 不在 DOM 中,则事件不会触发。

在您的情况下,因为您正在使用 makeModal 方法创建模型,只需将 ModalView 创建移动到那里:

makeModal: function () {
$('body').html('<div class="modal"><div class="modal-close">&times;</div>');
new ModalView();
}

已更新 JSFiddle .

无论如何,ModalView 的创建应该是 MakeModalView 的责任,并且在 makeModal 方法中执行此操作听起来是正确的地方.

关于javascript - 如何将事件绑定(bind)到动态创建的主干中的 'el'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14903607/

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