Как поменять границу div, содержащего переключатель, когда отмечен

0

У меня есть часть кода, которую я использую для проверки переключателя, содержащегося в div, где в любом месте в div нажата кнопка выбора продукта. Мне нужно добавить границу, потому что div - это фотография, и я скрыл кнопку, чтобы ее не было на фотографии, и мне нужен мой клиент, чтобы знать, что она проверена. Код:

<script type='text/javascript'>//<![CDATA[ 
$("div.div-check").on("click",function(event) {
    var target = $(event.target);
    if (target.is('input:radio')) return;
    var checkbox = $(this).find("input[type='radio']");

    if( !checkbox.prop("checked") ){
        checkbox.prop("checked",true);
        $('input:radio').filter(':checked').parent().addClass('checked');
    } else {
        checkbox.prop("checked",false);
    }
});
//]]>  

</script>

Кроме того, мне было интересно, является ли этот код уязвимым, поскольку скрипт меняет флажок. Заранее спасибо!

Новое: я думаю, что мой оригинальный вопрос и код были запутаны мной из-за следующего фрагмента моего кода.

$('input:radio').filter(':checked').parent().addClass('checked');

Это была моя догадка о том, как получить границу, и я не имел в виду, что она была в коде, который я опубликовал. Я предполагал, что для достижения границы нужно добавить класс под названием "checked", который я мог бы создать в моем css. Ответ.css ниже, о котором я не слышал. Я думаю, что ответ.css, поставленный ниже, потребовал, чтобы линия была ниже бесполезной, поскольку граница показывает то же самое, что и скрипт без этой строки.

$('input:radio').filter(':checked').parent().addClass('checked');

Тем не менее, я отредактировал код для кода ниже, предложенного tchoow002, но у меня все еще есть проблема. Когда пользователь щелкает другим выбором после выбора выбора заранее, граница остается красной, даже если выбран новый выбор. Возвращаемое значение верное, но красная рамка при первом выборе остается.

<script type='text/javascript'>//<![CDATA[ 
$("div.div-check").on("click",function(event) {
var target = $(event.target);
if (target.is('input:radio')) return;

var checkbox = $(this).find("input[type='radio']");

if( !checkbox.prop("checked") ){
checkbox.prop("checked",true);
$('input:radio').filter(':checked').parent().addClass('checked');
checkbox.parent().css("border","1px solid red");
} else {
checkbox.prop("checked",false);
checkbox.parent().css("border","none");
}
});
//]]>  
</script>

Я попытался добавить код в оператор else ниже, но это не сработало. Также в исходном коде, который я опубликовал

$('input:radio').filter(':checked').parent().removeClass('checked');
  • 1
    Почему бы вам просто не включить границу в CSS для checked класса?
  • 0
    И в коде, который снимает флажок, используйте removeClass('checked') .
Показать ещё 9 комментариев

1 ответ

1
Лучший ответ

Используйте .css()

Используйте.css(), чтобы получить значение свойства style для первого элемента в наборе согласованных элементов или установить один или несколько свойств CSS для каждого согласованного элемента.

Поэтому, если вы хотите установить свойство css для рамки для вашего флажка parent div, вы можете сделать:

Чтобы добавить границу: checkbox.parent().css("border","1px solid red")

Чтобы удалить границу: checkbox.parent().css("border","none")

Как это:

if( !checkbox.prop("checked") ){
    checkbox.prop("checked",true);
    $('input:radio').filter(':checked').parent().addClass('checked');
    checkbox.parent().css("border","1px solid red");
    $('input:radio').not(':checked').parent().removeClass('checked').css("border", "none"); //Remove border and checked class from all other radios that are not checked
} else {
    checkbox.prop("checked",false);
    checkbox.parent().removeClass('checked'); //remove checked class when clicked twice
    checkbox.parent().css("border","none");
}

Или

Используйте .addClass чтобы добавить дополнительный класс css, который содержит вашу границу.

И .removeClass чтобы удалить его.

  • 1
    Было бы полезно поместить ответ в контексте приведенного оригинального кода.
  • 0
    Спасибо за вклад. Обновленный ответ
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню