[英]How to add class to not clicked radio button in radio button group
我有一個單選按鈕組,如下所示
<input type="radio" class="radiowear" name="wear_radio" shoe="" cloth="8" accessory="14" img="/male/C8A14">
<input type="radio" class="radiowear" name="wear_radio" shoe="" cloth="9" accessory="15" img="/male/C9A15">
<input type="radio" class="radiowear" name="wear_radio" shoe="" cloth="10" accessory="16" img="/male/C10A16">
等等..
使用JQuery
單擊按鈕時,我需要向未單擊的單選按鈕添加CSS類。
下面的代碼無法正常工作,單擊時會添加一個類。
$('.radiowear').click(function() { if ($('input:radio[name=wear_radio]').not(":checked")) { $(this).addClass('low-up'); } else { $(this).removeClass('low-up'); } console.log(this.getAttribute('class')); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input type="radio" class="radiowear" name="wear_radio" shoe="" cloth="8" accessory="14" img="/male/C8A14"> <input type="radio" class="radiowear" name="wear_radio" shoe="" cloth="9" accessory="15" img="/male/C9A15"> <input type="radio" class="radiowear" name="wear_radio" shoe="" cloth="10" accessory="16" img="/male/C10A16">
有什么更好的方法呢? 謝謝。
只需更改所有類,然后刪除它-我必須包裹一個標簽才能看到對該類的任何更改。 如果要更改廣播上的類,請刪除.parent()
我添加了一個已檢查的測試,以便在已經檢查過的情況下可以觸發更改加載
const $wearradios = $('.radiowear'); $wearradios.on("change",function(e) { $wearradios.parent().addClass("low-up"); $(this).parent().toggleClass("low-up",!this.checked) }).change();
.low-up { background-color:red }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <label><input type="radio" class="radiowear" name="wear_radio" data-shoe="" data-cloth="8" data-accessory="14" data-img="/male/C8A14"></label> <label><input type="radio" class="radiowear" name="wear_radio" data-shoe="" data-cloth="9" data-accessory="15" data-img="/male/C9A15"></label> <label><input type="radio" class="radiowear" name="wear_radio" data-shoe="" data-cloth="10" data-accessory="16" data-img="/male/C10A16"></label>
data-*
屬性。 [name="wear_radio"]:not(:checked) { outline: 2px solid red; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input type="radio" name="wear_radio" data-shoe="" data-cloth="8" data-accessory="14" data-img="/male/C8A14"> <input type="radio" name="wear_radio" data-shoe="" data-cloth="9" data-accessory="15" data-img="/male/C9A15"> <input type="radio" name="wear_radio" data-shoe="" data-cloth="10" data-accessory="16" data-img="/male/C10A16">
'click'
事件。 您知道不用鼠標即可更改復選框嗎? 使用'change'
.attr()
或.prop()
進行回調 const $wear_radio = $('[name="wear_radio"]'); $wear_radio.on('change', function() { $wear_radio.prop('class', function() { $(this).toggleClass('low-up', !this.checked) }); });
.low-up { outline: 2px solid red; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input type="radio" name="wear_radio" data-shoe="" data-cloth="8" data-accessory="14" data-img="/male/C8A14"> <input type="radio" name="wear_radio" data-shoe="" data-cloth="9" data-accessory="15" data-img="/male/C9A15"> <input type="radio" name="wear_radio" data-shoe="" data-cloth="10" data-accessory="16" data-img="/male/C10A16">
代替$(this).addClass('low-up');
,獲取未選中的輸入並向其添加類。
$('.radiowear').change(function() { const unCheckedInputs = $('input:radio[name=wear_radio]').not(":checked"); unCheckedInputs.addClass('low-up'); $(this).removeClass('low-up'); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input type="radio" class="radiowear" name="wear_radio" shoe="" cloth="8" accessory="14" img="/male/C8A14"> <input type="radio" class="radiowear" name="wear_radio" shoe="" cloth="9" accessory="15" img="/male/C9A15"> <input type="radio" class="radiowear" name="wear_radio" shoe="" cloth="10" accessory="16" img="/male/C10A16">
首先,不要聽廣播中的click
事件; 如果我通過鍵盤或其他輸入方式更改它,則不會觸發。 而是監聽change
事件。
其次,您需要.siblings()
:
$('.radiowear').on('change', function() {
$(this).removeClass('low-up').siblings('.radiowear').addClass('low-up');
});
使用change
事件和siblings()
$('.radiowear').change(function() { $(this) .removeClass('low-up') .siblings() .addClass('low-up') });
.radiowear:not(.low-up) { transform: scale(1.5); }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input type="radio" class="radiowear" name="wear_radio" shoe="" cloth="8" accessory="14" img="/male/C8A14"> <input type="radio" class="radiowear" name="wear_radio" shoe="" cloth="9" accessory="15" img="/male/C9A15"> <input type="radio" class="radiowear" name="wear_radio" shoe="" cloth="10" accessory="16" img="/male/C10A16">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.