javascript - jquery单击更改列表元素的类
问题描述
这是我动态生成的列表:
<ul class="config-swatch-list">
<li class='color' onclick="color_select();">
<a href="#" style="background-color: random_val"></a>
</li>
<li class='color' onclick="color_select();">
<a href="#" style="background-color: random_val"></a>
</li>
<li class='color' onclick="color_select();">
<a href="#" style="background-color: random_val"></a>
</li>
<li class='color' onclick="color_select();">
<a href="#" style="background-color: random_val"></a>
</li>
<li class='color' onclick="color_select();">
<a href="#" style="background-color: random_val"></a>
</li>
</ul>
和js函数:
function color_select() {
$('#color').click(function()
{
if ($(this).hasClass('active')) {
console.log('clicked');
$(this).removeClass('active');
} else {
$(this).addClass('active');
}
});
}
我的问题是单击第一个li
元素时使用此代码,此 js 函数active
成功添加了一个类。但这不适用于第 2 或第 4 个li
元素(在控制台中打印clicked
)。因此代码仅适用于第 1、第 3 和第 5 个li
元素。如果我双击第二个或第四个li
元素,那么代码将按预期工作。
我想要做的就是在单击后将单个li
元素 css 类更改为active
或删除active
类(如果已经存在active
类)。
解决方案
从 中删除onclick
属性<a>
。并且不要包裹click
在其他功能中。并且还使用.color
而不是#color
`
$('.color').click(function()
{
if ($(this).hasClass('active')) {
console.log('clicked');
$(this).removeClass('active');
} else {
$(this).addClass('active');
}
});
.active{
color:orange;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="config-swatch-list">
<li class='color'>
<a href="#" style="background-color: random_val">one</a>
</li>
<li class='color'>
<a href="#" style="background-color: random_val">two</a>
</li>
<li class='color'>
<a href="#" style="background-color: random_val">three</a>
</li>
<li class='color' >
<a href="#" style="background-color: random_val">four</a>
</li>
<li class='color'>
<a href="#" style="background-color: random_val">five</a>
</li>
</ul>
推荐阅读
- python - 无法让 py2app 编译我的 python 代码。感觉我越来越近了,但是
- c# - 使用 foreach 在二维数组中添加空格
- javascript - 为什么时间戳不同?
- jenkins - 如何在 Jenkins Slack Uploader 中输入文件路径以将文件发布到 Slack 频道
- javascript - 无法向 MailChimp 提交数据
- gcc - 如何在 Windows 上执行 gcc 的“x”文件输出?
- react-router-dom - 尝试使用 react-router-dom 在 clojurescript 中创建多页应用程序
- spring-boot - 使用 jsch 的 Sftp 到大型机
- javascript - React JS 中的 window.addeventlistener('resize') componentDidMount 循环
- r - 每个值的列中返回值 = 给定月份