2012-01-03 3 views
15

У меня есть флажок, выберите все проблемы. У меня есть несколько флажков, которые могут быть запущены с помощью мастера.jQuery checkbox: выберите все/нет, кроме одного

Если мастер-сервер является чекем, вы можете выбрать любой флажок (который работает). Теперь моя проблема заключается в том, что когда я проверяю «нет», все они ушли даже от ведущего

Мне нужно не снимать мастер. У меня может быть столько же, сколько и флажок.

Есть ли решение для этого, не помещая идентификатор на каждый или автоматически снимите флажок, а не главный?

вот мой код:

<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 
+0

снимите все то перепроверить мастер –

ответ

12

на основе коды, я хотел бы добавить обертку вокруг флажка вы хотите, чтобы выбрать все/нет, а затем дать идентификатор обертки и входы, чтобы выбрать все или никто.

$('#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> 
+0

, так что если у меня есть несколько списка и кнопки, я могу создать столько список и Я могу создать каждый список в отдельности? –

+0

да, и вы можете динамически вызывать исходя из того, какой из них вы проверили (мастер), если вам нужно –

+0

благодарю вас за код, он работает так, как мне это нужно, и я могу легко его обновить в соответствии с моими потребностями –

6

Вам нужно всего лишь очень небольшие изменения, чтобы исключить вашего хозяина.

Вы можете сделать это с .Не («# мастер»), как это:

$('#checkNone').click(function() { 
    $('input[type="checkbox"]').not("#master").attr('checked', false); }); 
+1

, поэтому, если у меня есть несколько списков и несколько мастеров, я должен поставить: not ('id1'). Not ('id2 ') .not (' id3 '). нет (' id4') ?? –

+1

Нет. Если у всех этих мастеров есть id, который заканчивается на «master», вы можете просто исключить их все сразу, например: not («input [id $ = 'master']") – Tys

+0

Или .not ("input [id * = 'master'] "), если они начинаются с« master .. ». См. Подстановочный знак jQuery для более подробной информации об этом материале. – Tys

Смежные вопросы