2 回答

TA貢獻1805條經驗 獲得超10個贊
當您這樣做時$(element).click(...)
,您將一個新的偵聽器附加到該元素。如果您重復執行此操作,這些偵聽器將堆疊。在您的示例中,每次更改下拉列表時,您都會添加一個新事件 -而不是替換前一個事件。
相反,最簡單的方法可能是這樣的:
有一個存儲顏色的全局變量
將更改事件附加到您的下拉列表。更改后,將全局顏色變量設置為所選選項
將點擊事件附加到您的輸入。單擊時,將背景設置為全局顏色變量
看起來像這樣:
我有這個下拉列表,它有兩個選項,藍色和綠色。如果我選擇藍色,每當我點擊文本輸入字段時,它的背景就會在藍色和黑色之間切換,這是文本字段的背景顏色。紅色選項也是如此。但是,我只工作過第一次和第二次的代碼。從第三次開始,即使我選擇紅色,它也會在藍色和另一種顏色之間切換。這是我的 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">

TA貢獻1848條經驗 獲得超2個贊
找到上面的jsfiddle。
您可以使用 just$('.my-input')來調用單擊事件,刪除所有類,然后進行檢查以查看colorOption您選擇的內容。
//if option chosen is red then allow change input box to red
$('.my-input').click(function(inputBox) {
colorOption = $("#change_color option:selected").text();
$(this).removeClass();
colorOption === 'Red' ? $(inputBox.target).addClass('red') : $(inputBox.target).addClass('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">
添加回答
舉報