442 Stimmen

Kontrollkästchen ein/aus schalten

Ich habe die folgenden:

$(document).ready(function()
{
    $("#select-all-teammembers").click(function() {
        $("input[name=recipients\\[\\]]").attr('checked', true);
    });                 
});

Ich möchte die id="select-all-teammembers" wenn sie angeklickt wird, um zwischen angekreuzt und nicht angekreuzt zu wechseln. Ideen? die nicht Dutzende von Codezeilen sind?

13voto

matt burns Punkte 23443

Ich denke, es ist einfacher, einfach einen Klick auszulösen:

$("#select-all-teammembers").click(function() {
    $("input[name=recipients\\[\\]]").trigger('click');
});

0 Stimmen

Das ist viel effektiver, da es auch die 'onclick'-Funktion der Ziel-Chkbox auslöst.

10voto

Abdennour TOUMI Punkte 75271

Verwenden Sie dieses Plugin:

$.fn.toggleCheck  =function() {
       if(this.tagName === 'INPUT') {
           $(this).prop('checked', !($(this).is(':checked')));
       }

   }

Dann

$('#myCheckBox').toggleCheck();

0 Stimmen

Bei mir hat die Lösung nicht funktioniert, bis ich die if-Anweisung wie folgt geändert habe: if(this[0].tagName === 'INPUT')

10voto

Ja͢ck Punkte 165747

Seit jQuery 1.6 können Sie mit .prop(function) um den Prüfstatus jedes gefundenen Elements umzuschalten:

$("input[name=recipients\\[\\]]").prop('checked', function(_, checked) {
    return !checked;
});

0 Stimmen

Ausgezeichnete Antwort. Wissen Sie zufällig mehr über die Übergabe des Unterstrichs als ersten Parameter? Wo könnte ich mehr darüber erfahren?

1 Stimmen

Edit: Offensichtlich ist es im Wesentlichen ein Mittel, um Null zu übergeben stackoverflow.com/questions/11406823/

2voto

user1428592 Punkte 29

In der Annahme, dass es sich um ein Bild handelt, mit dem das Kontrollkästchen aktiviert werden kann, funktioniert dies bei mir

<img src="something.gif" onclick="$('#checkboxid').prop('checked', !($('#checkboxid').is(':checked')));">
<input type="checkbox" id="checkboxid">

4 Stimmen

Da dies Ihre erste Antwort ist, beachten Sie, dass es meist am besten ist, dem Muster zu folgen, das der Poster in der Frage verwendet hat - wie das Einfügen des jQuery-Codes in den Document Ready Handler und nicht in-line im Markup. WENN Sie einen Grund haben, dies NICHT zu tun, fügen Sie eine Erklärung hinzu, warum.

2voto

MoonLite Punkte 4556

Wenn Sie jedes Kästchen einzeln umschalten möchten (ein einzelnes Kästchen funktioniert aber genauso gut):

Ich empfehle die Verwendung von .each() , da es leicht zu ändern ist, wenn Sie verschiedene Dinge geschehen lassen wollen, und trotzdem relativ kurz und leicht zu lesen ist.

z.B.:

// toggle all checkboxes, not all at once but toggle each one for its own checked state:
$('input[type="checkbox"]').each(function(){ this.checked = ! this.checked });

// check al even boxes, uncheck all odd boxes:
$('input[type="checkbox"]').each(function(i,cb){ cb.checked = (i%2 == 0); });

// set all to checked = x and only trigger change if it actually changed:
x = true;
$('input[type="checkbox"]').each(function(){
    if(this.checked != x){ this.checked = x; $(this).change();}  
});

nebenbei bemerkt... nicht sicher, warum jeder verwendet .attr() oder .prop() zu (un)überprüfen Dinge.

Soweit ich weiß, hat element.checked immer in allen Browsern gleich funktioniert?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X