恐ろしいタイトルで申し訳ありませんが、基本的に私がやっていることは、プラスボタンが押されたときにバックボーンビューを生成するテンプレートを持っていることです. これは、いくつかのテキスト入力とドロップダウンを選択する非常に単純なフォームです。重複している領域を強調表示して、フォームを検証したいと考えています。現在、私のアンダースコアテンプレートには、
<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 の 1 つだけが強調表示されます (複数のアイテムが同じ ID を持っているため)。クラスはこの状況で機能しますか? 前もって感謝します!