【问题标题】:How to add diffrent css class to html for every foreach loop in knockout js如何为淘汰赛js中的每个foreach循环添加不同的css类到html
【发布时间】:2017-08-25 07:22:33
【问题描述】:

KnockoutJS 数据

function ExampleViewModel() {
    var self = this;
    self.ExampleData = ko.observableArray([]);
    self.update = function() {
        $.ajax("test.json", {
            success: function(allData) {
                var mappeddata = $.map(allData, function(item) {
                    return new DataItem(item)
                });
                self.ExampleData(mappeddata);
            }
        });
    }
}

function DataItem(data) {
    this.Name = ko.observable(data.name);
}
var exampleViewModel = new ExampleViewModel();
ko.applyBindings(exampleViewModel);

HTML 数据

    <div data-bind="foreach: ExampleData">
      <div class="has-topic-background-color">
      </div>
    </div>

如何在每个 foreach 循环中更改以下 div 的类 div class="has-topic-background-color

我需要如果在第一个循环中它显示红色然后在第二个循环中我需要蓝色插入红色

【问题讨论】:

    标签: javascript jquery html css knockout.js


    【解决方案1】:

    你可以使用css绑定

    http://knockoutjs.com/documentation/css-binding.html

    function ViewModel() {
      var self = this;
      self.data = ko.observableArray([1, 2, 3, 4, 5, 6, 7, 8, 9]);
      self.className = function(index) {
        return index % 2 === 0? 'redClass' : 'blueClass';
      };
      self.textValue = function(index) {
        return 'Data  for index ' + index + ' has background ' + self.className(index);
      }
    }   
    
    $(document).ready(function () {
      var myViewModel = new ViewModel();
      ko.applyBindings(myViewModel);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
    
    <div>
      You can inspect the element to see the class name
    </div>
    <br/>
    
    <div data-bind="foreach: data">
      <div data-bind="text: $parent.textValue($index()), css: $parent.className($index())"></div>
    </div>

    【讨论】:

    • 你好先生,很高兴再次见到你使用这个 css 类将用我的自定义 css 类更改每个循环?
    • 我正在修改一个更好的解决方案
    • 我总是尝试将逻辑放在javascript文件中
    • 如果我需要增加 3-4 课,我需要做什么先生?
    • 你可以在className函数里面放更多的条件
    猜你喜欢
    • 1970-01-01
    • 2017-08-12
    • 2019-03-09
    • 1970-01-01
    • 2013-02-13
    • 2013-01-04
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多