Javascript 如何在维护事件时打开视图生成的额外HTML元素?

Javascript 如何在维护事件时打开视图生成的额外HTML元素?,javascript,backbone.js,marionette,Javascript,Backbone.js,Marionette,主干/木偶视图生成的额外包装元素会导致问题(使用jQuery Mobile),因此我需要这样做。展开后,布局良好,但不再触发事件(请参见演示) 如何在维护事件的同时打开额外的元素 它使用插件,但没有插件的想法是一样的 Marionette.ItemView扩展了名为的属性。当您在视图声明中提到它时,包装元素就变成了中提到的元素 对于演示示例,最好使用该示例,而不是更改木偶渲染视图的方式 将您的视图更改为以下内容,它将起作用 var SubView1 = Backbone.Marionette.I

主干/木偶视图生成的额外包装元素会导致问题(使用jQuery Mobile),因此我需要这样做。展开后,布局良好,但不再触发事件(请参见演示)

如何在维护事件的同时打开额外的元素

它使用插件,但没有插件的想法是一样的


Marionette.ItemView
扩展了名为的属性。当您在视图声明中提到它时,包装元素就变成了中提到的元素

对于演示示例,最好使用该示例,而不是更改木偶渲染视图的方式

将您的视图更改为以下内容,它将起作用

var SubView1 = Backbone.Marionette.ItemView.extend({
  className: 'SubView1',
  template: function () {
    return '(SubView1) Click Me!'; // moved button tag and mentioned it in tagName
  },
  tagName: 'button',
  triggers: {
    'click': 'click:button' // no need to 'button' selector, it's already a root element
  }        
});

var SubView2 = Backbone.Marionette.ItemView.extend({
  className: 'SubView2',
  template: function () {
    return '(SubView2) Click Me!'; // moved button tag and mentioned it in tagName
  },
  tagName: 'button',
  triggers: {
    'click': 'click:button' // no need to 'button' selector, it's already a root element 
  }
});

var TopView = Backbone.Marionette.BossView.extend({
  className: 'TopView',
  subViews: {
    buttonView1: SubView1,
    buttonView2: SubView2
  },
  subViewEvents: {
    'buttonView1 click:button': 'onSubViewClickButton',
    'buttonView2 click:button': 'onSubViewClickButton' // there was a typo here
  },
  onSubViewClickButton: function () {
    $('body').append('<div>You clicked it, and TopView responded!</div>');
  }
});



var topView = new TopView();
topView.render().$el.appendTo($('body'));
var SubView1=Backbone.marionete.ItemView.extend({
类名:“子视图1”,
模板:函数(){
return'(子视图1)Click Me!';//移动了按钮标记并在标记名中提到它
},
标记名:“按钮”,
触发因素:{
'click':'click:button'//不需要使用'button'选择器,它已经是根元素
}        
});
var SubView2=Backbone.marionete.ItemView.extend({
类名:“子视图2”,
模板:函数(){
return'(子视图2)Click Me!';//移动了按钮标记并在标记名中提到它
},
标记名:“按钮”,
触发因素:{
'click':'click:button'//不需要使用'button'选择器,它已经是根元素
}
});
var TopView=Backbone.marionete.BossView.extend({
类名:“TopView”,
子视图:{
按钮视图1:子视图1,
按钮视图2:子视图2
},
子视图事件:{
'按钮视图1单击:按钮':'子视图单击按钮',
'ButtonView 2 click:button':'OnSubview ClickButton'//这里有一个打字错误
},
onSubViewClickButton:函数(){
$('body').append('单击它,TopView响应!');
}
});
var topView=新的topView();
render().$el.appendTo($('body');
希望这有帮助