javascript - 一旦切换应用激活或禁用,从列表中追加或删除项目?
问题描述
$(document).ready(function() {
var materials = [];
var limit = $("#upper").val();
$("#upper").change(function() {
limit = $(this).val();
});
$(".u").click(function() {
var color = $(this).attr('data-color');
var id = $(this).attr('id');
if (limit > $('.upper :not(.u)').length)
{
$(this).css('background', $(this).attr('data-color'));
var $el = $(this).toggleClass("u");
console.log("added");
} else if (!$(this).hasClass('u')) {
var $el = $(this).toggleClass("u");
console.log("removed");
}
});
});
.u {
background: #FFFFFF!important;
color: #000000;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="upper" type="number" min="1" max="9" class="tbox_style" value="1">
<div class="contents upper">
<div class="u" id="am" data-color="red">Upper Material 1</div>
<div class="u" id="bm" data-color="yellow">Upper Material 2</div>
<div class="u" id="cm" data-color="blue">Upper Material 3</div>
</div>
<div class="hidden">
<input type="hidden" name="u-selected" id="u-selected" value="">
</div>
当上限设置为 1 -> 记录added
或removed
工作正常
目前的问题是:
当上限更改为 2 或更多时 -> 日志added
或removed
工作,意外,如下运行
我的目标是:
- 然后将div
highlight
添加到列表中。 - 当 div
not highlight
然后从列表中删除时。
解决方案
您应该将处理正常情况和边界情况的逻辑分开(not-class-u 的数量超过limit
)
$(document).ready(function() {
var materials = []
var limit = $("#upper").val()
$("#upper").change(function() {
limit = $(this).val()
})
$(".u").click(function() {
var color = $(this).attr("data-color")
var id = $(this).attr("id")
var numberOfNotClassU = $(".upper :not(.u)").length
if (limit <= numberOfNotClassU) {
if (!$(this).hasClass("u")) {
var $el = $(this).toggleClass("u")
console.log("removed")
}
return
}
if (!$(this).hasClass("u")) {
var $el = $(this).toggleClass("u")
console.log("removed")
} else {
$(this).css("background", $(this).attr("data-color"))
var $el = $(this).toggleClass("u")
console.log("added")
}
})
})
.u {
background: #FFFFFF!important;
color: #000000;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="upper" type="number" min="1" max="9" class="tbox_style" value="1">
<div class="contents upper">
<div class="u" id="am" data-color="red">Upper Material 1</div>
<div class="u" id="bm" data-color="yellow">Upper Material 2</div>
<div class="u" id="cm" data-color="blue">Upper Material 3</div>
</div>
<div class="hidden">
<input type="hidden" name="u-selected" id="u-selected" value="">
</div>
推荐阅读
- java - 即使没有启动异常,套接字也不通信
- r - igraph 基于属性的相邻边
- laravel - Laravel 5.5 在控制器中连接你的类
- python - 用泡菜或莳萝保存类数据不起作用
- powershell - 在企业应用程序上分配应用程序角色所需的 AzureAD 目录角色是什么?
- python - 是否有另一种方法可以将相同的 for 字典循环迭代为无限?
- c++ - 打印指针向量的值
- javascript - 在 JS 文件中动态加载 React 组件
- sql-server - 带有数据库项目的 EF Core 工作流
- java - OpenGL绘图三角形不显示+ glClearColor不设置屏幕颜色