【发布时间】:2020-05-18 14:31:02
【问题描述】:
我看到了这个帖子:HTML <ul> | Change particular <li> color onclick and other <li> in the same <ul> to default color
它看起来像我要找的东西;但我对如何在 Rails 应用程序(也使用 react/redux)中做同样的事情感到有点困惑。在我迄今为止工作过的 Rails 应用程序中,我还没有在其中看到任何 jquery,所以我不确定在哪里/如何实现相同的想法。任何帮助表示赞赏!
我考虑过为 li 元素使用onClick 事件,然后创建一个函数来向单击的元素添加一个类/从所有其他 li 元素中删除该类,但我不确定这是否开启正确的轨道。
// 这是我渲染 ul 元素的组件
import React from 'react';
import TrackIndexItem from './track_index_item';
const TrackDetail = ({ tracks }) => (
<ul>
{ tracks.map(track => <TrackIndexItem key={ track.id } track={track} />) }
</ul>
);
export default TrackDetail;
// 这是我渲染 li 元素的组件
import React from 'react';
const TrackIndexItem = ({ track }) => (
<li>
<div className="track-info">
<i className="music-note-icon"></i>
<div className="track-text">
<p>{track.title}</p>
<p>{track.artist} • {track.album}</p>
</div>
</div>
</li>
);
export default TrackIndexItem;
// 这是我的 li 元素的 CSS:
li {
display: flex;
flex-direction: row;
padding: 0 20px;
.track-info {
display: flex;
flex-direction: column;
position: relative;
.music-note-icon {
position: absolute;
content: image_url('music-note-icon.png');
width: 10px;
height: 15px;
top: 20px;
}
.track-text {
margin-left: 25px;
p {
font-family: 'ProximaNova-Regular';
}
p:first-of-type {
font-size: 18px;
color: $white;
}
p:last-of-type {
font-size: 16px;
color: $gray;
margin-top: -15px;
}
}
}
}
【问题讨论】:
-
我会使用
.addClass()和.removeClass()。例如,如果该类被称为“单击”,您可以将其从任何拥有它的li元素中删除,然后将其添加到被单击的元素中。 -
啊,好吧,我也是这么想的。将它们放入我使用 li 标签的
onClick事件调用的函数中是否是个好主意? -
你可以这样做。我认为只需将其包含在 Click 回调的匿名函数中就很容易了。
-
您也可以在创建
<li>标签时将onClick()添加到您的JSX。我已将其添加到下面的示例中。
标签: javascript jquery html css ruby-on-rails