jQuery prüfen, ob eine Eingabe vom Typ Kontrollkästchen ist?


151

Ich möchte herausfinden, ob eine Eingabe ein Kontrollkästchen ist oder nicht, und Folgendes funktioniert nicht:

$("#myinput").attr('checked') === undefined

Vielen Dank noch mal!

Antworten:


333

Sie können den Pseudo-Selektor :checkboxmit einem Aufruf der isFunktion von jQuery verwenden:

$('#myinput').is(':checkbox')

1
Dies ist die Methode, die ich immer benutze.
Topher Fangio

Einfacher geht es wirklich nicht.
KyleFarris

9
Warum dafür die Auswahlmaschine verwenden? Es ist völlig unnötig.
Tim Down

7
@ Tim Down Ich gehe davon aus, dass es effizientere Möglichkeiten gibt, dasselbe zu erreichen. Ich denke, ich mag diese Version, weil der Code sehr gut lesbar ist.
Ken Browning

2
@ KenBrowning: Fair genug. Ich war 2009 ziemlich anti-jQuery, insbesondere die vorherrschende SO-Einstellung, jQuery blind für alles zu verwenden; Meine Ansichten haben sich seitdem etwas gemildert und ich würde meine Ablehnung rückgängig machen, wenn es möglich wäre. Ich denke jedoch immer noch, dass ich einen Punkt hatte. Alternative (die ich nicht leugnen kann, ist ausführlicher):var myInput = $("myinput")[0]; var isCheckbox = myInput.nodeName.toLowerCase() == "input" && myInput.type == "checkbox";
Tim Down

22
>>> a=$("#communitymode")[0]
<input id="communitymode" type="checkbox" name="communitymode">
>>> a.type
"checkbox"

Oder eher vom Stil von jQuery:

$("#myinput").attr('type') == 'checkbox'

Perfekt gültig. Nicht das einfachste.
KyleFarris

6
Es spart mit der Selector-Engine von jQuery, deren Verwendung hier völlig unangemessen ist. Die erste Variante ist umso besser, als die Möglichkeit vermieden wird, dass die verwirrte attr()Funktion von jQuery irgendetwas durcheinander bringt.
Tim Down

3
@ Tim Down ist richtig - du solltest attr()zu prop()afaik wechseln. attr()erhält nicht immer den "echten" Attributwert (dh aktiviert oder nicht aktiviert) vom Browser. Ehrlich gesagt nicht sicher, warum dies der Fall ist, aber ich habe das vor einiger Zeit gelernt.
thekingoftruth

1
In Chome unterscheidet Ihr zweites Beispiel zwischen Groß- und Kleinschreibung: jsfiddle.net/gtza0uuL . Es ist nicht mit .prop, aber ich weiß nicht, ob das garantiert werden kann. Hinweis: Sie können auch nicht einfach .toLowerCase () ausführen, da 'type' möglicherweise undefiniert ist.
xr280xr


6

Eine Nicht-jQuery-Lösung ähnelt einer jQuery-Lösung:

document.querySelector('#myinput').getAttribute('type') === 'checkbox'

2

Verwenden Sie diese Funktion:

function is_checkbox(selector) {
    var $result = $(selector);
    return $result[0] && $result[0].type === 'checkbox';
};

Oder dieses jquery Plugin:

$.fn.is_checkbox = function () { return this.is(':checkbox'); };

0
$('#myinput').is(':checkbox')

Dies ist die einzige Arbeit, um das Problem zu lösen und festzustellen, ob das Kontrollkästchen aktiviert ist oder nicht. Es gibt wahr oder falsch zurück, ich suche es stundenlang und versuche alles, jetzt ist seine Arbeit klar, ich benutze EDG als Browser und W2UI


Denken Sie daran, Code Refactor zu verwenden, wenn Sie Code in Ihre Fragen und Antworten einfügen.
Andres Felipe
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.