Установите только один флажок и снимите флажок с других

Я пытаюсь установить только один флажок в то время, а другие снимать флажок, но когда я хочу проверить новый chekcbox, тогда предыдущий будет снимать флажок и так далее.

я попробовал этот код:

Файл JS

$('input[type="checkbox"]').click(function() {
$(".check_class").attr("checked", false);
$(this).attr("checked", true);    
});

HTML-файл

    <ons-list-header>Takistused</ons-list-header>
    <ons-list-item modifier="tappable">
      <label class="checkbox checkbox--noborder checkbox--list-item">
        <input type="checkbox" id="example">
        <div class="checkbox__checkmark checkbox--noborder__checkmark checkbox--list-item__checkmark"></div>
        vihmaveerenn
      </label>
    </ons-list-item>
    <ons-list-item modifier="tappable">
      <label class="checkbox checkbox--noborder checkbox--list-item" id="test">
        <input type="checkbox" id="example">
        <div class="checkbox__checkmark checkbox--noborder__checkmark checkbox--list-item__checkmark" ></div>
        äärekivi
      </label>
    </ons-list-item>
    <ons-list-item modifier="tappable" >
      <label class="checkbox checkbox--noborder checkbox--list-item" id="test1">
        <input type="checkbox" id="example">
        <div class="checkbox__checkmark checkbox--noborder__checkmark checkbox--list-item__checkmark"></div>
        munakivi tee
      </label>
    </ons-list-item>
  </ons-list>

Что я делаю не так? Я пробовал разные подходы, но он не будет работать в реальном времени.

3 ответа

Решение

Попробуйте .not(this) как ниже:

$(document).on('click', 'input[type="checkbox"]', function() {      
    $('input[type="checkbox"]').not(this).prop('checked', false);      
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" id="one" />
<input type="checkbox" id="two" />
<input type="checkbox" id="three" />
<input type="checkbox" id="four" />

Вы действительно должны использовать переключатели для этого типа функций, однако вы можете просто исключить элемент из набора совпадений с помощью not как это:

$('input[type="checkbox"]').click(function() {
   $('input[type="checkbox"]').not(this).prop("checked", false);
});

JSFiddle: http://jsfiddle.net/TrueBlueAussie/4n2e31oq/

Обратите внимание, что вам нужно использовать prop и не attr для определенных свойств, таких как checked,

Вы можете сделать это немного более эффективным, кэшируя выбор флажков:

var $checks = $('input[type="checkbox"]');
$checks.click(function() {
   $checks.not(this).prop("checked", false);
});

http://jsfiddle.net/TrueBlueAussie/4n2e31oq/1/

 $(function () {
        $('input[type=checkbox]').click(function () {
             var chkBox = document.getElementById('<%= chkBranchRoleTransaction.ClientID %>');
            var chks = chkBox.getElementsByTagName('INPUT');
             for (i = 0; i < chks.length; i++) {
                 chks[i].checked = false;
             }
             $(this)[0].checked = true;
         });
    });

Если вы хотите сделать это с помощью class. Вы должны добавить класс и удалить, кроме текущего элемента.

jQuery(document).on('click', '.esg-filterbutton', function() { 
    jQuery(this).addClass('selected');     
    jQuery('.esg-filterbutton').not(this).removeClass('selected');  
});
Другие вопросы по тегам