2008-09-04 21 views
4

tıklayın ve onları alabilirsiniz Seçici 'input[type=checkbox]' ile. Kullanıcının çeşitli onay kutularını seçip tıklayabilmesini istiyorum. Bunu başarmak için listede bir onay kutusunun dizinini almam gerekiyor, bu yüzden bu dizini .slice(start, end)'a iletebilirim. Kullanıcı bir kutuyu tıkladığında dizini nasıl alabilirim?jQuery dilimleme ve <p></p> Onay kutularını bir listesi var ... Bu muhtemelen gerçekten basit jQuery soru, ama öyle belgelerinde 10 dakika sonra o da cevap veremedi olayları

cevap

8

Aşağıdaki seçicide jQuery: 'da da çalışılmalıdır.

Ardından :gt(index) ve :lt(index) filtreler birlikte dize, sen 7 onay kutularına 5th istiyorsanız öyleyse, input:checkbox:gt(4):lt(2) kullanmayı tercih ediyorum edebilirsiniz.

Geçerli olarak tıklanan onay kutusunun dizinini almak için $("input:checkbox").index($(this))'u kullanmanız yeterlidir.

1

Bu hızlı bir çözümdür, ama öyle gibi belki bir dizin ipucu ile, her bir onay kutusunu benzersiz bir kimlik verecek:

<input id="checkbox-0" type="checkbox" /> 
<input id="checkbox-1" type="checkbox" /> 
<input id="checkbox-2" type="checkbox" /> 
<input id="checkbox-3" type="checkbox" /> 
<input id="checkbox-4" type="checkbox" /> 

Daha sonra kolayca elde edebilirsiniz endeksi:

$(document).ready(function() { 
    $("input:checkbox").click(function() { 
    index = /checkbox-(\d+)/.exec(this.id)[1]; 
    alert(index); 
    }); 
}); 
0

Cevabınız için teşekkürler, samjudson.

Daha fazla deneyden sonra, bunları seçmek için sadece $(':checkbox')'u bile kullanabileceğinizi öğrendim. Aralığı almak için .slice() işlevini kullanabileceğiniz ilginçtir, ancak :gt ve :lt ile seçicide de yapabilirsiniz. Yine de, .slice() sözdizimini selektör filtrelerini kullanmaktan daha temiz olmak için buluyorum.

Ryan Duffield'in çözümünü beğenmediğimi, çünkü işaretlemede değişiklikler gerektirdiğini ve yinelenen kodu içerdiğini söylemem gerekecek.

1

@Gorgapor: Sanırım bazen anlamıyla biraz daha az soru sormam gerek. :-) Bir çeşit indeks gerektirecek şekilde kilitlendiğinizi düşündüm. JQuery'yi daha çok kullandığınızda, genellikle böyle bir şey yapmanıza gerek olmadığını göreceksiniz.