2010-11-19 2 views
0

Bence bu oldukça basit bir sorundur.jQuery Seçici

Büyük bir tablom var. Her satırda iki onay kutusu vardır. Biri işaretliyse, aynı satırdaki diğer onay kutusunun özniteliğini de işaretlemek istiyorum.

<script language="javascript" type="text/javascript"> 
$(document).ready(function(){ 
$(".BookTable input[name=attended]").click(function() { 

    if ($(this).attr("checked") == true) 
    { 
     $("input").parent().parent("input[name=attended]").attr("checked","yes"); 
    } 
});  
}); 
</script> 

<table class="BookTable adj-table"> 
<tr> 
<td>Joe</td> 
<td>Bloggs</td> 
<td><input name="booking" id="booking" type="checkbox" value="1" /></td> 
<td><input name="attended" id="attended" type="checkbox" value="1" /></td> 
</tr> 
<tr> 
<td>Dave</td> 
<td>Smith</td> 
<td><input name="booking" id="booking" type="checkbox" value="1" /></td> 
<td><input name="attended" id="attended" type="checkbox" value="1" /></td> 
</tr> 
</table> 

My Code on Paste Bin

Bugüne kadar yalnızca tüm onay kutularını seçerek almak için görünebilir.

+0

Her zaman aslında * kodunuzu soruya dahil edin. Bir bağlantı iyidir, ancak StackOverflow'un soruları ve cevapları bağımsız olmalıdır (ve insanlar sorunuzu okumak için başka bir yere tıklamak zorunda kalmamalıdır). Belgede –

+0

'id' öznitelikleri benzersiz olmalıdır. Bu örnekte, kullanılmıyorlar bile, hepsini tamamen bırakabilirsiniz. – nickf

+2

'id' öznitelikleri ** benzersiz olmalıdır **. Bunun hakkında "yapmamalı". :-) –

cevap

0
$(".BookTable :checkbox").click(function(){ 
    if ($(this).is(":checked")) 
     $(this).parents("tr").find(":checkbox").attr("checked", "checked"); 
    else 
     $(this).parents("tr").find(":checkbox").removeAttr("checked"); 
}); 
+0

Buna gerek yok, .attr ("checked", bool) "* her * tarayıcıda çalışıyor, DOM'ı HTML biçimlendirmesiyle karıştırıyorsunuz, onlar farklı şeyler. –

+0

Teşekkürler bu çocuklar test edildiğinde iyi çalışıyor gibi görünüyor. Bu ihtiyaçlar için en uygun olanı, çünkü seçim yapılmadığında iki kutunun işaretini kaldırmıyor. – Sam

3

Böyle içeride <tr> sonra .find() girişlerine kadar gitmek .closest() kullanabilirsiniz:

$(".BookTable :checkbox").change(function() { 
    $(this).closest("tr").find(":checkbox").attr("checked", this.checked); 
}); 

You can test it out here. Aynı adı taşıyan iki kimliklerini olamaz

$(".BookTable :checkbox").change(function() { 
    if(this.checked) 
    $(this).closest("tr").find(":checkbox").attr("checked", true); 
}); 
+0

, "checked" özniteliğini bazı tarayıcılarda işaretlemesini sağlayacak şekilde ayarlamıyor mu? – hunter

+0

@hunter - Hayır, boolean özniteliğidir –

+0

IE içinde "checked =" false "öğesini ayarlarsanız, hala kontrol edilir – hunter

0

bunları bir sınıf

yapmalıdır: Yalnızca kontrol ancak diğer un-kontrol etmek isterseniz, sadece if() like this orada bir ekleme