check / uncheck checkbox χρησιμοποιώντας jquery?

Έχω κάποια πεδία κειμένου εισόδου στη σελίδα μου και εμφανίζω τις τιμές τους χρησιμοποιώντας JavaScript.

Χρησιμοποιώ τη συνάρτηση .set("value","") για να επεξεργαστώ την τιμή, να προσθέσω ένα επιπλέον πεδίο checkbox και να περάσω μια τιμή.

Εδώ θέλω να ελέγξω ότι αν value == 1, τότε αυτό το checkbox πρέπει να είναι τσεκαρισμένο. Διαφορετικά, θα πρέπει να παραμείνει μη τσεκαρισμένο.

Το έκανα αυτό χρησιμοποιώντας δύο divs, αλλά δεν αισθάνομαι άνετα με αυτό, υπάρχει κάποια άλλη λύση;

if(value == 1) {
    $('#uncheck').hide();
    $('#check').show();
} else{
    $('#uncheck').show();
    $('#check').hide();
}
Λύση

Για jQuery 1.6+ :

Η .attr() έχει ξεπεραστεί για τις ιδιότητες- χρησιμοποιήστε τη νέα συνάρτηση .prop() ως:

$('#myCheckbox').prop('checked', true); // Checks it
$('#myCheckbox').prop('checked', false); // Unchecks it

Για την jQuery < 1.6:

Για να ελέγξετε/ακυρώσετε ένα πλαίσιο ελέγχου, χρησιμοποιήστε το χαρακτηριστικό checked και αλλάξτε το. Με την jQuery μπορείτε να κάνετε:

$('#myCheckbox').attr('checked', true); // Checks it
$('#myCheckbox').attr('checked', false); // Unchecks it

Επειδή ξέρετε, σε HTML, θα έμοιαζε κάπως έτσι:

<input type="checkbox" id="myCheckbox" checked="checked" /> 
<input type="checkbox" id="myCheckbox" /> 

Ωστόσο, δεν μπορείτε να εμπιστευτείτε τη μέθοδο .attr() για να πάρετε την τιμή του checkbox (αν χρειαστεί). Θα πρέπει να βασιστείτε στη μέθοδο .prop().

Σχόλια (16)

Μπορείτε να χρησιμοποιήσετε την prop() για αυτό, καθώς Πριν από την jQuery 1.6, η μέθοδος .attr() μερικές φορές λάμβανε υπόψη τις τιμές των ιδιοτήτων κατά την ανάκτηση ορισμένων χαρακτηριστικών, γεγονός που θα μπορούσε να προκαλέσει ασυνεπή συμπεριφορά. Από την jQuery 1.6, η μέθοδος .prop() παρέχει έναν τρόπο για τη ρητή ανάκτηση τιμών ιδιοτήτων, ενώ η μέθοδος .attr() ανακτά χαρακτηριστικά.

var prop=false;
if(value == 1) {
   prop=true; 
}
$('#checkbox').prop('checked',prop);

ή απλά,

$('#checkbox').prop('checked',(value == 1));

Αποσπάσματα

Σχόλια (0)

Μπορείτε να ορίσετε την κατάσταση του πλαισίου ελέγχου με βάση την τιμή:

$('#your-checkbox').prop('checked', value == 1);
Σχόλια (1)