it-roy-ru.com

Снимите флажок с помощью jquery

Переключатели отключены только при обновлении страницы

<input type="radio" name="test">
    1<input type="radio" name="test">2
   <input type="button" id="btn" />

$("#btn").click(function(){

$(':radio').each(function () {
        $(this).removeAttr('checked');
        $('input[type="radio"]').attr('checked', false);
    })

}); 

Я создал скрипкуhttp://jsfiddle.net/8jKJc/220/

Но он не работает с Bootstrap 

14
DON

Используйте .prop вместо .attr:

$('input[type="radio"]').prop('checked', false); 

[ Демо ]

14
Mohit Kumar

Использовать этот :

 $(this).prop('checked', false);
 //$('input[type="radio"]').attr('checked', false);

Вы можете видеть эту ссылку, чтобы различать .prop() с .attr(). .attr() подходит для доступа к атрибутам элемента HTML, таким как (name, id, class,etc..) и .prop(), для свойств элемента DOM, которые в большинстве случаев возвращают логическое значение. 

С jQuery официальной страницы:

Например, selectedIndex, tagName, nodeName, nodeType, ownerDocument, defaultChecked и defaultSelected должны быть получены и установлены с помощью метода .prop (). До jQuery 1.6 эти свойства можно было получить с помощью метода .attr (), но это не входило в сферу attr. Они не имеют соответствующих атрибутов и являются только свойствами.

5
Norlihazmey Ghazali

используя встроенную функцию .prop ().

$('input[type="radio"]').prop('checked', false);
3
user5259715

Это простое в использовании следующее поможет вам:

$("input:checked").removeAttr("checked");

Проверьте ваш обновленный Fiddle Здесь

2
ketan

Если вы используете jQuery> 1.5, вы должны использовать prop вместо attr.

$('input[type="radio"]').prop('checked', false);

Демо здесь .

Смотрите здесь для деталей.

2
Andrea Salicetti

.prop только устанавливает свойства, а не атрибуты.

jQuery API

Или вы можете использовать is для этого

$("#btn").click(function(){
$("input[type='radio']").each(function() {
if($(this).is(':checked')){
  $(this).prop('checked',false);
   }
});
});
0
Varun

рекомендации:

  • изменить функцию не правильно 
  • используйте функцию щелчка
  • не используйте setTimeout ()!
<style>
    .radio-button {
       display: block;
       position: relative;
       min-height: 34px;
       margin-bottom: 0px;
    }
    .radio-button input {
       position: relative;
       opacity: 1;
       cursor: pointer;
    }
    .radio-button span {
       position: absolute;
       height: 18px;
       width: 18px;
       background-color: #fff;
       border: 1px solid #222;
       border-radius: 2px;
       cursor: pointer;
    }
    .radio-button input:checked + span {
       background-color: #222;
    }
    .radio-button span:after {
       top: 9px;
       left: 9px;
       width: 8px;
       height: 8px;
       border-radius: 50%;
       background: #fff;
    }
</style>

<div class="question-row">
    <div class="radio-button">
        <input type="radio" name="1" value="1">
        <span></span>
    </div>
    <div class="radio-button">
        <input type="radio" name="1" value="2">
        <span></span>
    </div>
    <div class="radio-button">
        <input type="radio" name="1" value="3">
        <span></span>
    </div>
    <div class="radio-button">
        <input type="radio" name="1" value="4">
        <span></span>
    </div>
</div>

<script>
    $(document).on('click', '.radio-button span', function () {
        var questionRow = $(this).closest('.question-row')[0],
        input = $(this).closest('.radio-button').find('input')[0];
        $(questionRow).find('input').prop('checked', 
            false).removeAttr('checked');
        $(questionRow).find('span').not($(this)).removeClass('checked');
        if ($(this).hasClass('checked')) {
            $(this).removeClass('checked');
            $(input).prop('checked', false);
        } else {
            $(this).addClass('checked');
            $(input).prop('checked', true);
        }
    })
</script>
0
mojtaba ramezani