У меня есть набор радиокнопок, в которых, когда я нажимаю радиокнопку, я хочу, чтобы метка меняла цвет или что-то еще. Но когда я нажимаю другую радиокнопку, цвет исчезает. Поэтому у меня есть что-то вроде этого:
jQuery('label').mouseup(function(){
jQuery(this).prev().attr('checked', 'checked');
jQuery('input').next().removeClass('selected');
jQuery('input:checked').next().addClass('selected');
});
если вам нужно посмотреть html:
<input type="radio" id="radio1" name="myRadio" value="option-1" />
<label for="radio1">Label 1</label>
<input type="radio" id="radio2" name="myRadio" value="option-2" />
<label for="radio2">Label 2</label>
Сначала удаляется «выбранный» класс из всех меток, а затем повторно применяется только к отмеченным меткам.
Это работает и просто, но я подумал, что это не самый эффективный способ сделать это. Я полагаю, что javascript выполняет итерацию по каждому элементу ввода и использует больше ресурсов, чем необходимо.
Мне любопытно, если кто-нибудь знает общий способ сделать это более эффективно. Я, кажется, делаю подобные вещи довольно часто в моем коде jQuery. Я только что использовал jQuery в течение последних 3 месяцев или около того.