2012-01-03 11 views
15

Bir onay kutum var tüm sorunları seçin. Bir master tarafından tetiklenebilen çoklu onay kutum var.jQuery onay kutusu: tümünü seç/yok bir tane hariç

Master olanı kontrol edildiyse, herhangi bir onay kutusunu seçebilirsiniz (bu, çalışır). Şimdi benim sorunum "hiçbiri" kontrol ettiğimde bunların hepsi bile master

İhtiyacım olan şey master kontrolsüz değil. İstediğim kadar onay kutusu alabilirim.

Her birine bir kimlik koymadan veya otomatik olarak onay kutusunun işaretini kaldırmadan, ana pencereden değil, bunu yapmak için bir çözüm var mı? Burada

benim kodunuz: tümünü seçmek için sarıcı id ve girdileri tüm/hiçbirini seçip vermek istediğiniz kod dayanarak

<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

işaretini bütün o yüzden usta –

cevap

12

, ben onay-box etrafında sarıcı eklersiniz veya Yok.

$('#list input[type="checkbox"]').attr('checked', false);

veya jQuery 1.6+

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

için bu şekilde

, siz "usta" birini etkilemeden tüm onay kutularını kontrol edebilirsiniz.

İşte kod:

<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

tekrar kontrol i gibi birçok liste oluşturabilir ve düğmeleri her bir listeyi ayrı ayrı oluşturabilir miyim? –

+0

evet ve eğer kontrol etmek için (ana) kontrol edebilirsiniz (ana) –

+0

kodunuz için teşekkürler, ihtiyaç duyduğunuz şekilde çalışır ve ihtiyaçlarımı eşleştirmek için kolayca güncelleyebilirim –

6

Yalnızca ana dışlamak için çok küçük bir değişiklik gerekir.

Böyle bir .NOT ("# usta") ile yapabilirsiniz: Birden fazla liste ve düğmeleri varsa

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

'a bakın, böylece birden fazla liste ve birden fazla masterim varsa, şunu belirtmeliyim: not ('id1'). Değil ('id2 ') .not (' iD3 '). değildir (' ID4') ?? –

+1

Hayır. Tüm bu master'lerin 'master' ile biten bir kimliği varsa, hepsini bir kerede hariç tutabilirsiniz, şöyle ki: ("input [id $ = 'master']") – Tys

+0

Veya .not ("input [id *] = 'master'] ") bu id 'usta' ile başlıyorsa. Bu konuda daha fazla ayrıntı için jQuery joker karakter seçimine bakın. – Tys