删除Backbone Marionette CompositeViews中的父类

时间:2013-05-24 08:43:46

标签: jquery marionette

您好我正在尝试做一些简单的事情(请考虑我是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应该有一个图像的最终结果。 这是一个非常简单的例子,最终它将成为一个更复杂的元素,但是现在我坚持第一步(我认为更简单的一步)。 请在这里帮助我,我怜悯你的评论,再次在这些领域新的。

1 个答案:

答案 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"});