Установите только один флажок и снимите флажок с других
Я пытаюсь установить только один флажок в то время, а другие снимать флажок, но когда я хочу проверить новый 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);
});
$(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');
});