【发布时间】:2020-02-09 08:57:57
【问题描述】:
我有这个下拉列表,它有两个选项,蓝色和绿色。如果我选择蓝色,每当我点击文本输入字段时,它的背景就会在蓝色和黑色之间切换,这是文本字段的背景颜色。红色选项也是如此。但是,我只第一次和第二次工作的代码。从第三次开始,即使我选择红色,它也会在蓝色和另一种颜色之间切换。 这是我的 HTML:
有谁知道怎么回事?我在想也许我不完全理解 jquery 的更改功能是如何工作的。
$('#change_color').on('change', function() {
//get the text value of the option chosen
var colorOption = $("#change_color option:selected").text();
//if option chosen is red then allow change input box to red
if (colorOption === 'Red') {
$('.my-input').click(function(inputBox) {
$(inputBox.target).toggleClass('red');
});
}
//if option is chosen is red then allow change input box to blue
else {
$('.my-input').click(function(inputBox) {
$(inputBox.target).toggleClass('blue');
});
}
});
.my-input {
background-color: black;
width: 5%;
font-size: 3vw;
}
.red {
background-color: red;
width: 5%;
font-size: 3vw;
}
.blue {
background-color: blue;
width: 5%;
font-size: 3vw;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="change_color" class="form-control box-border" placeholder="SPECIAL CHAR">
<option selected disabled>Special Char</option>
<option>Red</option>
<option>Blue</option>
</select>
<input type="text" class="my-input">
<input type="text" class="my-input">
<input type="text" class="my-input">
【问题讨论】:
-
了解像
.click或.on这样的方法实际上执行 非常重要。在您的情况下,这些不会触发事件发生;他们正在添加一个 listener。通过在同一个元素上重复调用.click,您会一次又一次地堆叠事件。 -
没错,我放了 console.log($(inputBox.target)) 看看他们在做什么,看到一堆堆起来的。你有解决办法吗?
-
我已经提交了答案。
-
好的谢谢我去看看
标签: javascript jquery html css