2016-09-19 17 views
5

Genelde ,'u kullandığımız farklı sınıfları seçmek için birden fazla sınıf gerektiğinde ve ben de yanlış hatırlamadığımdan emin olmak için etrafta arama yaptığımı biliyorum ama bir şekilde , kullanırsam hata yok, ancak yalnızca ikinci seçimi algılamaz ilkini tespit et. Sınıfları ayrı olarak ararsam, kod yine de çalışırdı. Birisi jQuery ile yanlış yaptığımı bana bildirebilir mi? Bu çalışma,Neden birden çok seçici ile prop() kullanarak çek özelliğini çeviremiyorum?

bu çalışır.

if(($('.use-remaining').prop("checked")) || (($('.use-briquettes').prop("checked")))){} 

ama ben bu şekilde yaparsak, bu üç onay kutusu

if(($('.use-remaining, .use-briquettes').prop("checked"))){} 

işe yaramaz. Bir form gönderilmeden önce yalnızca bir tanesi kontrol edilebilir. Form gönderildiğinde, hangi onay kutusunun işaretlendiğini kontrol eder. Yukarıdaki koddaki sınıflardan biri işaretlenirse, form, 3. onay kutusu işaretliyse belirli bir girişi kontrol eder ve farklı bir doğrulama olup olmadığını kontrol eder.

Sadece bu iki onay kutusunun, kontrol etmek için aynı girişlere sahip olmasından dolayı, eğer mümkünse, bunları birleştirmemeleri gerektiğini anladım. jQuery docs başına

+1

kullanım çift tırnak şey değişmez –

+2

@KrisRoofe .. – Li357

+0

plz kodunuzu buraya gönderin –

cevap

8

:

.prop (propertyName)

Açıklama: eşleşen öğeleri kümesinin birinci eleman için bir özelliğin değeri al.

Ve ayrıca:

.prop() yöntem eşleşti sette sadece ilk elemanı için özellik değerini alır.

Çoklu seçicilerle yalnızca ilk seçilen öğenin özelliğini kontrol eder. Gördüğünüz gibi ilk eleman işaretlendiğinde

$("#test_button").click(function() { 
 
    console.log($("#test, .test_2").prop("checked")); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" id="test"> 
 
<input type="checkbox" class="test_2"> 
 
<button id="test_button"> 
 
Test 
 
</button> 
 
<br> 
 
Notice that when the first isn't selected but the second is, it still is false!

, bu doğru olacaktır ya hepsi ve diğer değil, ya olduklarında hepsi: Aşağıdaki kod parçasını göz önünde kontrol edildi, ancak ikinci kontrol edildiğinde ve ilk değilken.

+0

Aslında Phil'e çek vermek istedim çünkü aslında ilk olarak yorumlarımı cevaplamak yerine açıklamalarımda açıklıyordu. Ancak örnekle daha ayrıntılı bir şekilde gönderdiğiniz için teşekkür ederim. Çekini kimin vereceğini seçmek çok zor. – WXR

+0

@WXR Phil'e ver diyorum, gerçekten harika bir çözüm sunuyor ve yorumlarda harika bir açıklama yaptı. – Li357

+0

@WXR Yorumum hızlı bir tek liner oldu, bu yüzden muhtemelen yorum yapmadan önce Andrew'un bu yanıt yolunu yazdığını söyleyebilirim :) – Phil

1

jQuery koleksiyonunda çoklu seçiciler kullanıldığında ve bir özelliği kontrol ederken yalnızca ilk elemanı kontrol edecektir.

var test1 = $(".test1").prop("checked") 
 
var test2 = $(".test2").prop("checked") 
 
var test3 = $(".test1, .test2").prop("checked") 
 

 
$('p').text(test1 + " " + " " + test2 + " " + test3)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class="test1" type="checkbox" /> 
 
<input class="test2" type="checkbox" checked="true" /> 
 

 
<p></p>
yukarıdan benim yorumunda

4

kopyalanıyor ....prop() itibaren

Açıklama: eşleşti elemanların sette ilk elemanı için bir özelliğin değerini alın

Yani, bütün kullanmayın- grubunun içinden kalan ve kullanım-briketler sınıflanmış elemanlar, sadece ilk bir

'un kontrol edilen özelliğini kontrol etmek için Tüm use-remaining ve use-briquettes sınıflandırılır elemanların kümesinden herhangi işaretli özellikler varsa, sen .is() önce de belirtildiği gibi

var anyChecked = $('.use-remaining, .use-briquettes').is(function() { 
    return this.checked; 
}); 
+0

aslında ilk önce sorumu cevapladınız. Bana (yorumlarda) açıklayan ilk kişi olmaktan başka bana neden böyle yapmak istediğimin bir alternatifi olmaktan başka sana hala teşekkür etmem gerekiyor. – WXR

+0

@WXR Rica ederim. Sorunuzu geliştirdiğiniz için teşekkürler, buradaki bilgi tabanını genişletmeye gerçekten yardımcı oluyor. – Phil

+0

Harika çözüm! – Li357

1

, .prop fonksiyon eşleşti elemanların sette ilk element için özellik değerini verir kullanabilirsiniz.

$("form").on("submit", function(e) { 
 
    e.preventDefault(); 
 
    if ($(".use-remaining:checked, .use-briquettes:checked").length) { 
 
    console.log(".use-remaining and/or .use-briquettes are checked"); 
 
    } else { 
 
    console.log("both .use-remaining and .use-briquettes are not checked"); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 
<form> 
 
    <input type="checkbox" name="use-remaining" class="use-remaining">use-remaining<br> 
 
    <input type="checkbox" name="use-briquettes" class="use-briquettes">use-briquettes<br> 
 
    <input type="Submit" value="Click to test"> 
 
</form>

Alternatif olarak, bu durumu test edebilirsiniz: İşte istenen sonuçları elde etmek için tek yoldur

if ($(".use-remaining, .use-briquettes").is(":checked")) { 
}