木偶-将类添加到父类ItemView tagname
Marionette - Add class to parent ItemView tagname
我正在使用Bootstrap手风琴面板,并希望为panel-collapse
的父panel
添加一个类。
,
if (child element) hasClass('panel-collapse.in') {
this.addClass('open')
} else {
this.removeClass('open')
}
这是我的js代码片段,以及我对代码工作方式的视而不见:
return Marionette.ItemView.extend({
tagName: 'li',
className: "panel panel-default",
template: panelTpl,
events: {
...
'click .panel-collapse': '_panelChange',
},
_panelChange: function() {
if(element.has('div.in').length != 0) {
element.addClass('open');
console.log('panel opened fool');
} else {
element.removeClass('open');
console.log('panel closed fool');
}
},
我遵循了这里提供的解决方案:使用jquery在木偶itemView上添加class。
但无济于事。
events
与modelEvents
是否有差异?
我不确定我应该把我的代码,或者确切地说它应该如何写,但我认为它应该在event
是的,视图的事件和模型的事件是有区别的。当像这样将处理程序绑定到视图的事件时:
events: {
'click .panel-collapse': '_panelChange'
},
然后我们讨论发生在DOM中的事件。当模型上发生更改等时,模型上的事件就会发生。但是,在您的情况下,没有使用模型。
这是一种解决_panelChange
函数的方法。
return Marionette.ItemView.extend({
tagName: 'li',
className: "panel panel-default",
template: panelTpl,
events: {
...
'click .panel-collapse': '_panelChange',
},
_panelChange: function(e) {
$clickedEl = $(e.target);
// Checks if clicked element has element with class,
// if so, adds a class to parent element.
// otherwise removes the class from parent element.
if($clickedEl.has('div.in').length != 0) {
this.$el.addClass('open');
} else {
this.$el.removeClass('open');
}
},
});
你正在使用的方法不是数据驱动的(你没有使用模型),所以你可能想要研究一下。
对于数据驱动的方法,您可以考虑这样做:
1)为手风琴中的每个项目设置一个模型。这将需要一些不同的东西,如{label: 'My accordion item 1', open: false}
。
2)当用户单击手风琴项时,单击事件处理程序将更新模型this.model.set('open', true);
。视图还需要监听它的模型变化,所以当它被停用时,它需要更新自己(删除open
类)。如this.listenTo(this.model, 'change:open', this.toggleMe)
.
3)然后,处理所有手风琴模型的集合将收到一个事件,即模型的open
属性已经更改。然后,它将更新所有其他模型,将旧的open
模型设置为false(关闭它)。
这样,所有对状态的更新都发生在集合和模型中(数据驱动),视图只听取它们并更新自己,除了项目视图的点击处理程序,它也会在点击时更新自己的模型。
- 是否可以从父类访问子类的属性
- 使用此选项选择父类内部的类
- 子类访问父类's闭包变量
- 如何通过Prototype或jquery移除子类的父类基类
- JavaScript—父类和子类/对象的此问题
- 通过使用此组件,检索父类数据
- jQuery .not() 排除特定类的父类
- 如何在 jQuery 中获取具有特定父类的所有元素的内容,并将它们传递给 GET 变量
- 如何在单击父类的另一个子类时获取子类的值
- 初始化父类中的变量(JavaScript/CoffeeScript 习语)
- hover添加类-或子类:悬停以影响父类
- 唯一标识父类的元素
- 无法将值从实例对象传输到父类的实例数组中
- jQuery父类更改的子级
- 在父类更改时停止HTML5音频/视频
- 如何从父类中记录成员函数
- 如果类中没有子元素,则赋予父类
- 使用继承配置netzkejavascript代码(在带有参数的父类中定义js代码)
- 单击父类中的任何内容时,从父类中删除该类
- 木偶-将类添加到父类ItemView tagname