JQuery: выберите все/нет, кроме одного
У меня есть флажок, выберите все проблемы. У меня есть несколько флажков, которые могут запускаться с помощью мастера.
Если мастер-сервер проверяется, вы можете выбрать любой флажок (который работает). Теперь моя проблема в том, что когда я проверяю "нет", все они ушли даже от мастера
Мне нужно не отменить мастер. Я могу иметь как можно больше флажка.
Есть ли решение для этого, не устанавливая идентификатор для каждого или автоматически снимите флажок, а не главный?
вот мой код:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#checkAll').click(function() {
if(!$('#master').is(':checked')) { return;
} $('input[type="checkbox"]').attr('checked', true);
});
$('#checkNone').click(function() {
$('input[type="checkbox"]').attr('checked', false); });
$('#master').click(function() { if($('#master').is(':checked')) {
return; } $('input[type="checkbox"]').attr('checked', false);
});
$('input[type="checkbox"]').click(function() {
if(!$('#master').is(':checked')) { $(this).attr('checked', false);
}
});
});
</script>
</head>
<input type="checkbox" value="master" id="master">master
<span id="checkAll">All</span>
<span id="checkNone">None</span>
<input type="checkbox" value="1" id="c1">1
<input type="checkbox" value="2" id="c2">2
<input type="checkbox" value="3" id="c3">3
<input type="checkbox" value="4" id="c4">4
<input type="checkbox" value="5" id="c5">5
Ответы
Ответ 1
Основываясь на вашем коде, я бы добавил обертку вокруг флажка, который вы хотите выбрать all/none, а затем дайте идентификатору обложки и входам выбрать все или ничего.
$('#list input[type="checkbox"]').attr('checked', false);
или для jQuery 1.6 +
$('#list input[type="checkbox"]').prop('checked', false);
Таким образом, вы можете контролировать все свои флажки, не затрагивая "главный".
Здесь код:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#checkAll').click(function() {
if(!$('#master').is(':checked')) {
return;
}
$('#list input[type="checkbox"]').attr('checked', true);
});
$('#checkNone').click(function() {
$('#list input[type="checkbox"]').attr('checked', false);
});
$('#master').click(function() {
if($('#master').is(':checked')) {
return;
}
$('#list input[type="checkbox"]').attr('checked', false);
});
$('#list input[type="checkbox"]').click(function() {
if(!$('#master').is(':checked')) {
$(this).attr('checked', false);
}
});
});
</script>
</head>
<input type="checkbox" value="master" id="master">master
<span id="checkAll">All</span>
<span id="checkNone">None</span>
<div id="list">
<input type="checkbox" value="1">1
<input type="checkbox" value="2">2
<input type="checkbox" value="3">3
<input type="checkbox" value="4">4
<input type="checkbox" value="5">5
</div>
Ответ 2
Вам нужна только небольшая модификация, чтобы исключить вашего мастера.
Вы можете сделать это с помощью .not( "# master" ), как это:
$('#checkNone').click(function() {
$('input[type="checkbox"]').not("#master").attr('checked', false); });