ノックアウトjsの使用を開始しました。私はノックアウトjsのforeachバインディングを使用して画像のグループを作成しています。最初はすべての画像に同じCSSクラスの「imageUnvisited」があり、クリックした特定の画像のクラスを変更してクラスを設定しようとしています。クリックイベントでクラスを変更するのに成功しましたが、別のイメージをクリックすると直前にクリックされたイメージの新しい追加クラスが削除されます。私はあなたが間違って何かを見つけたらそれを赦してくれました。ノックアウトjsでforeachバインディングを使用して作成された要素のグループから特定の要素のクラスを永続的に設定する
var vm = {
item: jsonData.items,
clickedImageIndex: ko.observable('')
}
ko.applyBindings(vm);
function getVisitedClass(data, index) {
if (index() == vm.clickedImageIndex()) {
return "imageVisited"
}
}
function imageClicked(data, e) {
var itemTarget = e.target || e.srcElement;
index = ko.contextFor(itemTarget).$index();
vm.clickedImageIndex(index);
}
.imageUnvisited {
border: solid 1px green;
}
.imageVisited {
border: solid 1px black;
}
<div data-bind="foreach: item" id="image_gallery">
<div id="image_wrapper">
<image data-bind="attr: { id: 'image' + $index(), src: $data.Src, class: getVisitedClass($data, $index)},click: imageClicked" class="imageUnvisited" role="button"></image>
</div>
</div>