2017-08-04 3 views
0

Ich habe so viele Fragen zu diesem Problem gelesen, aber was auch immer ich tue, es funktioniert nicht.Überprüfen Sie, ob Kontrollkästchen mit dynamischer ID aktiviert ist

Ich habe mehrere Kontrollkästchen mit dynamischem IDs, wie die:

More: 
<input type="checkbox" name="more" id="checkbox-more-285"> 
<br> Extra: 
<input type="checkbox" name="extra" id="checkbox-extra-285"> 

<button class="add_to_cart"> 
    Add to cart 
</button> 

Die Zahl 285 kann alles sein, dass ich an anderer Stelle verwenden.

Dann habe ich diese jQuery:

jQuery('.add_to_cart').click(function(e) { 
    e.preventDefault(); 

    if (jQuery("[id^='checkbox-more-']:checked")) { 
    console.log('1'); 
    } 

    if (jQuery("[id^='checkbox-extra-']:checked")) { 
    console.log('2'); 
    } 
    return false; 
}); 

Wie man auf dem jsFiddle hier https://jsfiddle.net/ sehen kann, wann immer ich auf in den Warenkorb Button geklickt haben, beide Protokolle sind auf der Konsole.

+1

Versuch 'jQuery (" [id^= 'Checkbox-mehr- '] "). is (": checked ")' –

Antwort

3

Es ist nicht genug, um für die jQuery-Sammlung zu testen, die immer truthy wird. Fügen Sie die .length Eigenschaft zum Test, wie folgt aus:

if (jQuery("[id^='checkbox-more-']:checked").length) { // etc... 
0

Sie entweder verwenden können

jQuery("[id^='checkbox-more-']").is(":checked") 
{ 
    console.log('1'); 
    } 

oder

if($("[id^='checkbox-more-']").prop('checked') == true){ 
    console.log('1'); 
} 
+0

'prop' ist hier möglicherweise nicht geeignet, da es nur die erste Übereinstimmung überprüft, nicht die anderen Elemente, die auch eine solche' id 'haben können. – trincot

Verwandte Themen