您好我正在尝试做一些简单的事情(请考虑我是Marionette + CSS + jquery的新手)。 我想要做的是: 我有2个div,当页面加载时,它们有一些特定的类样式(非活动样式红色),当用户点击其中一个时,我删除'inactive'类并插入'active'类样式,绿色颜色。 我正在使用Marionnette CompositeView来渲染我的元素,问题是“非活动”类被删除但活动类没有被添加,我简化了我的问题:
<script id="ulTemplate" type="text/template">
<ul class="ulItem">
</ul>
</script>
<script id="internal-Item" type="text/template">
<div class="<%= className %>"></div>
</script>
<div class="container">
</div>
My JS/CSS/Code 我正在为父元素设置背景的原因(额外的div CompositeView正在添加)是因为我的div应该有一个图像的最终结果。 这是一个非常简单的例子,最终它将成为一个更复杂的元素,但是现在我坚持第一步(我认为更简单的一步)。 请在这里帮助我,我怜悯你的评论,再次在这些领域新的。
答案 0 :(得分:0)
实际上您的代码正在运行并且正在更改类,但问题是您正在将类从“internal-Item-inactive”更改为“switcher-item-background-active” addClasstoParentElement函数。并且该类不是您作为参数传递的类,也未在您的CSS中定义。
在该功能中进行此更改就成了伎俩。
addClasstoParentElement: function (options) {
if (!options.element.parent().hasClass(options.className)) {
options.element.parent().addClass(options.className); // "internal-Item-active"
}
请检查此链接 http://jsfiddle.net/xbBEy/64/
我在上面添加了代码和解释。
this.removeClassfromParentElement({element:this.ui.div1, className: "internal-Item-inactive"});
this.addClasstoParentElement({element: this.ui.div1, className: "internal-Item-active"});
// and here we make the second div Inactive,
// this referst to this specific Itemview that indeed contains div1 but does not contains div2 so you cannot use
// this.ui.div2 as it will be undefined. thats why is find it using $('.did2') its that is traversing the entire dom to find it.
this.removeClassfromParentElement({element:$('.div2').closest('div'), className: "internal-Item-active"});
this.addClasstoParentElement({element: $('.div2').closest('div'), className: "internal-Item-inactive"});