790 Stimmen

jQuery hasAttr prüft, ob es ein Attribut auf einem Element gibt

Wie prüft man, ob es ein Attribut auf ein Element in jQuery gibt? Ähnlich wie bei hasClass sondern mit attr ?

Zum Beispiel,

if ($(this).hasAttr("name")) {
    // ...
}

14 Stimmen

Quickie: if( $(this).is('[ATTRIBUTE_NAME]') ) { /* ... */ } ÜBRIGENS: dies ist kein Duplikat dieser Frage mehr, es ist nur eine ähnliche Frage zu einem anderen Problem, das verlinkte Duplikat heißt jetzt "Elemente nach Attribut auswählen"

23voto

JamesM-SiteGen Punkte 804

Dies geschieht am besten mit filter() :

$("nav>ul>li>a").filter("[data-page-id]");

Es wäre immer noch schön, .hasAttr() zu haben, aber da es das nicht gibt, gibt es diesen Weg.

7voto

rlemon Punkte 17094
Object.prototype.hasAttr = function(attr) {
    if(this.attr) {
        var _attr = this.attr(attr);
    } else {
        var _attr = this.getAttribute(attr);
    }
    return (typeof _attr !== "undefined" && _attr !== false && _attr !== null);      
};

Ich kam ein überquerte diese beim Schreiben meiner eigenen Funktion, um die gleiche Sache zu tun... Ich dachte, ich würde teilen, falls jemand anderes hier stolpert. Ich habe null hinzugefügt, weil getAttribute() null zurückgibt, wenn das Attribut nicht existiert.

Diese Methode ermöglicht es Ihnen, jQuery-Objekte und reguläre Javascript-Objekte zu überprüfen.

5voto

user398341 Punkte 6009

Sie können es auch mit Attributen wie disabled="disabled" auf den Formularfeldern usw. verwenden, etwa so:

$("#change_password").click(function() {
    var target = $(this).attr("rel");
    if($("#" + target).attr("disabled")) {
        $("#" + target).attr("disabled", false);
    } else {
        $("#" + target).attr("disabled", true);
    }
});

Das Attribut "rel" speichert die ID des Zieleingabefeldes.

5voto

bmarti44 Punkte 1207

Ich habe ein hasAttr()-Plugin für Jquery geschrieben, das all dies auf sehr einfache Weise erledigt, genau so, wie es der OP verlangt hat. Mehr Informationen ici

EDIT : Mein Plugin wurde bei der großen plugins.jquery.com-Datenbanklöschungskatastrophe von 2010 gelöscht. Sie können nachsehen ici für Informationen darüber, wie Sie es selbst hinzufügen können und warum es noch nicht hinzugefügt wurde.

0 Stimmen

Komisch, dass diese Links im IE 8 nicht funktionieren, aber in Chrome schon...

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