【问题标题】:Apply CSS styling to a mapped item将 CSS 样式应用于映射项
【发布时间】:2016-08-19 02:58:18
【问题描述】:

我有一个设置页面复选框的项目列表。这些存储在const items 中,如下所示:

const ITEMS = [
    ["youtube", "YouTube"],
    ["videos", "Videos"],
    ["facebook", "Facebook"],
    ["settings", "Settings"],
]

目前,这四项只是作为列表项列出。我现在拥有的是这样的:

但我想要的是这样的:

我正在考虑应用检查以查看子类别是否属于该父类别,并对子类别应用某种类型的缩进。这可以通过map 来实现吗(这就是我遍历这个数组的方式)?或者有没有更聪明、更有效的方法来解决这个问题?

这是我呈现复选框的方式:

item: function(i) {
    return (
        <div className="checkbox">
            <label>
                <input type="checkbox" checked={this.state.items[i[0]]}/>
                {i[1]}
            </label>
        </div>
    )
}

render: function() {
    return (
        <div className="col-sm-12">
            {_(ITEMS).map(this.item, this)}
        </div>
    )
} 

【问题讨论】:

  • 你能发布一些代码如何生成复选框吗?而且我想知道为什么您将子数组用作数组中的项目...?
  • 我使用数组中的一个数组来访问值“youtube”、“videos”等,以便在检查时访问它,并在网站上正确显示“YouTube”。我应该切换到包含每个数组的对象吗?

标签: javascript html css reactjs underscore.js


【解决方案1】:

我建议您使用数组中的对象。因此,您不仅可以将属性映射到每个项目。对于仅使用普通 Javascript 访问它,我将使用 for-Loop,因为它与旧版浏览器兼容。我做的一个例子,可以在这里找到:

https://jsfiddle.net/morrisjdev/vjb0qukb/

【讨论】:

  • 小提琴,特别是 var items 结构,帮了我很多忙。谢谢!
【解决方案2】:

使用一些“脏”代码,您可以使用:https://jsfiddle.net/1sw1uhan/

const ITEMS = [
    ["youtube", "YouTube"],
    ["videos", "Videos"],
    ["facebook", "Facebook"],
    ["settings", "Settings"],
]

var list = $('<ul>');
$.each(ITEMS, function( index, value ) {
	if ((index+1)%2 == 0 && index != 0){
		var sublist = $('<ul>').append($('<li>').text(value[1]).attr('id', value[0]));
	} else {
		var sublist = $('<li>').text(value[1]).attr('id', value[0]);
	}
	list.append(sublist);
})
$('#somediv').append(list);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="somediv">

</div>

【讨论】:

  • 还有其他不涉及jQuery的解决方案吗?这对我来说似乎有点太乱了,但我很感激这个答案。
  • 你每次有四个项目还是列表是动态的?
  • 这将是一个静态的ITEMS列表,所以应该更容易处理。
  • 我没有比上面的代码更容易的想法了。你用的是纯 JS 吗?
  • 我正在使用 React/JSX,这是公司代码,所以我不想在其中引入 jQuery。这不是世界末日,我只是想知道这是否可以以一种简单的方式完成。不过感谢您的帮助。
猜你喜欢
  • 2010-11-04
  • 2016-02-19
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
相关资源
最近更新 更多