javascript - 检查选择选项类是否已存在
问题描述
我想在 html 中动态附加一个选择元素,并且当任何选择中的任何选项发生更改时,我想检查该选项是否已在任何现有选择元素中被选中。
为此,我为每个选择选项使用一个类,并且当任何选择中的选项发生更改时,请检查该类选定选项是否已经存在。
我正在使用以下代码,但我无法弄清楚如何检查每个选择以查看是否选择了相同的选项。
HTML:
<div class="list">
</div>
<div class="hide">
<select>
<option value=""></option>
<option class="a" value="">A</option>
<option class="b" value="">B</option>
<option class="c" value="">C</option>
<option class="d" value="">D</option>
</select>
</div>
<button class="add" type="add">Add</button>
JS:
$('.add').on('click', function(e){
$('.list').append($('.hide').html());
});
$(document).on('change', '.list select', function(){
var cls = $(this).find(':selected').attr('class');
if ($('.list .'+cls).length > 0) {
alert('It exists');
}
});
JSFiddle:http: //jsfiddle.net/vtzor9Ld/
解决方案
您的代码可以用这一行修复:
if ($(`.list option.${cls}:selected`).length > 1) {
console.log('It exists');
}
您需要测试超过 1 次(而不是 0 次),并且您只想测试匹配类的选定选项
这是另一种方法,可以在有用信息的情况下逐个查找事件。
$('.add').on('click', function(e) {
$('.list').append($('.hide').html());
});
$(document).on('change', '.list select', function() {
var cls = $(this).find(':selected').attr('class');
$('.list select').not($(this)).find('option:selected').each(function(i) {
if ($(this).hasClass(cls)) console.log("Matching class on select # " + (i + 1))
})
});
.hide {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="list"></div>
<div class="hide">
<select>
<option value=""></option>
<option class="a" value="">A</option>
<option class="b" value="">B</option>
<option class="c" value="">C</option>
<option class="d" value="">D</option>
</select>
</div> <button class="add" type="add">Add</button>
推荐阅读
- javascript - 与直接调用函数相比,使用 call / apply 有什么好处?
- java - 针对可翻译字符串执行条件语句
- javascript - Angular 6 - 指令输出同时触发所有组件
- python - TensorFlow:如何在 TensorFlow 1.14 中加载使用旧版本 TensorFlow 训练的权重?
- node.js - 如何在车把中处理带有未知键的 json 对象的嵌套数组
- javascript - 无法在“CanvasRenderingContext2D”上执行“drawImage”:提供的值不是“类型”
- javascript - 如何在 Vue 中使用 Firebase 身份验证
- python - 有没有办法使用 Python 的 gspread API 自动调整 Google 表格中的列?
- c# - 使用 Dictionary 添加 http 请求标头
- sql - 为什么总是向我返回 ORA-01403 错误?