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")) {
// ...
}
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")) {
// ...
}
Es wäre wahrscheinlich besser, so etwas zu tun wie: if( typeof( $(this).attr('name') ) != 'undefined' ) { // ... } da undefined tatsächlich mit einem einfachen: undefined = 1 neu definiert werden kann
@FuzzyDunlop, Ja, aber wenn attr
es ""
die zurückkehren würde false
auch. Es sollte sein true
denn ein leeres Attribut ist ein gültiges Attribut. Es besteht auch keine Notwendigkeit für ein double-not, weil if
wird ohnehin auf bool zurückgesetzt.
Wenn Sie das Vorhandensein von Attributen häufig überprüfen werden, würde ich vorschlagen, eine hasAttr
Funktion zu verwenden, wie Sie in Ihrer Frage vermuten:
$.fn.hasAttr = function(name) {
return this.attr(name) !== undefined;
};
$(document).ready(function() {
if($('.edit').hasAttr('id')) {
alert('true');
} else {
alert('false');
}
});
<div class="edit" id="div_1">Test field</div>
Du bist so nah dran, dass es verrückt ist.
if($(this).attr("name"))
Es gibt kein hasAttr, aber wenn man ein Attribut mit seinem Namen anspricht, wird es einfach undefiniert zurückgegeben, wenn es nicht existiert.
Aus diesem Grund funktioniert der unten stehende Text. Wenn Sie das Attribut name aus #heading entfernen, wird der zweite Alarm ausgelöst.
Aktualisierung: Wie in den Kommentaren angegeben, werden die folgenden NUR funktionieren, wenn das Attribut vorhanden ist UND nicht auf etwas gesetzt wird, wenn das Attribut zwar vorhanden, aber leer ist
<script type="text/javascript">
$(document).ready(function()
{
if ($("#heading").attr("name"))
alert('Look, this is showing because it\'s not undefined');
else
alert('This would be called if it were undefined or is there but empty');
});
</script>
<h1 id="heading" name="bob">Welcome!</h1>
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.
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"