在创建新视图时在类似视图上使用类而不是id

时间:2013-04-04 02:55:38

标签: javascript jquery html css backbone.js

很抱歉这个可怕的标题,但基本上我正在做的是,我有一个模板,当按下加号按钮时会生成骨干视图。这是一个非常简单的表单,有一些文本输入,并选择下拉菜单。我想通过突出显示重复的区域来验证表单。在我目前的下划线模板中,我有

<div id="#index1-<%=dataId%>">

所以我的模型有一个dataId属性使id唯一。然后我可以按属性选择以红色突出显示该div。当我在搜索如何选择以某些内容开头的ID时,我发现了这篇文章:jquery how to select all the class elements start with "text-"?

作者讨论了如何使用类。我在验证时正在做的是添加一类样式error,以突出显示红色和东西的内容。因此,遍历使用加号按钮添加的页面上的所有子视图如下所示:

       var lastIndex1;
       _.each(this.childViews, function (childView) {
            var dataId = childView.model.get('dataId');

            var index1 = childView.$('#index1-' + dataId).val();
            if (lastIndex1 == index1) {
                $('#index1-' + dataId).addClass('error');
            } else {
                lastIndex1 = index1;
                $('#index1-' + dataId).removeClass('error');
            }
        });

所以基本上,我最终迭代我的视图,如果当前视图有问题,我添加我的error类。我想知道这个实现是否可以通过在html中使用某种类来改进,所以我根本不必使用dataId。

最初当我第一次编写代码时,如果我最后没有添加dataId,那么它只会突出显示其中一个不正确的ID(因为多个项具有相同的id)。课程可以适应这种情况吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

如果要为每个元素分配唯一的id,那么它应该与使用类名一样工作。您的问题可能出在childView函数的第一行。您的dataId var每次都可能获得相同的值,而不是您正在迭代的当前项。我不熟悉非核心,但您可以尝试var dataId = this.model.get('dataId');

之类的东西