Elementtyp mit jQuery abrufen

308

Ist es mit jQuery möglich, den Typ eines Elements mit jQuery herauszufinden? Ist das Element beispielsweise ein div, span, select oder input?

Wenn ich beispielsweise versuche, Werte mit jQuery in eine Dropdown-Liste zu laden, aber dasselbe Skript Code in eine Reihe von Optionsfeldern generieren kann, kann ich Folgendes erstellen:

$('.trigger').live('click', function () {
   var elementType = $(this).prev().attr(WHAT IS IT);
});

Bei einer Dropdown-Liste mit einer Schaltfläche daneben mit der Triggerklasse sollte meine elementTypeVariable selectnach dem Drücken der Schaltfläche zurückkehren.

Jamie Hartnoll
quelle
Können Sie umformulieren? Was meinst du mit Elementtyp?
Abdul Munim
Mögliches Duplikat beim Finden des Elementtyps mit jQuery
Felix Kling

Antworten:

558

Den Elementtyp auf jQuery-Art abrufen:

var elementType = $(this).prev().prop('nodeName');

das Gleiche ohne jQuery tun

var elementType = this.previousSibling.nodeName;

Überprüfung auf bestimmten Elementtyp:

var is_element_input = $(this).prev().is("input"); //true or false
Adeneo
quelle
16
Denken Sie daran, dass die Funktion .prop () nur in jQuery 1.6 hinzugefügt wurde - möglicherweise müssen Sie die von Ihnen verwendete Version aktualisieren!
Xgretsch
Funktionierte nicht mit dem alten jQuery 1.3.2, wurde also auf das neueste aktualisiert und funktionierte einwandfrei.
Damodar Bashyal
2
Dies könnte verbessert werden, indem 'tagName' wie hier erwähnt auf 'nodeName' umgeschaltet wird .
Kyle Stoflet
1
@KyleStoflet - Sie haben anscheinend Recht, nodeNameunterstützen mehr Arten von Elementen, und die Unterstützung von IE5.5 sollte kein Problem mehr sein. Daher sehe ich in der obigen Antwort keine Probleme beim Ändern tagNameauf nodeName. Beide funktionieren gut für Elemente, und letztere funktionieren auch für Textknoten, Attribute usw.
Adeneo
3
Funktioniert, aber das prev (), das für den betreffenden Beispielcode spezifisch ist, hat mich etwas verwirrt. Grundsätzlich$(this).is("input");
Fanky
56

Sie können auch verwenden:

$("#elementId").get(0).tagName
Ali
quelle
26

Sie sollten tagNameEigenschaft und attr('type')für Eingaben verwenden

Distdev
quelle
Ein Beispiel würde diesen Kommentar stärker machen.
Justapigeon
16

Wie Distdev angedeutet hat, müssen Sie den Eingabetyp noch unterscheiden. Das heißt,

$(this).prev().prop('tagName');

Ich werde es Ihnen sagen input, aber das unterscheidet nicht zwischen Kontrollkästchen / Text / Radio. Wenn es sich um eine Eingabe handelt, können Sie diese verwenden

$('#elementId').attr('type');

um Ihnen das Kontrollkästchen / den Text / das Radio mitzuteilen, damit Sie wissen, um welche Art von Steuerung es sich handelt.

James Toomey
quelle
9

Sie können verwenden .is():

  $( "ul" ).click(function( event ) {
      var target = $( event.target );
      if ( target.is( "li" ) ) {
         target.css( "background-color", "red" );
      }
  });

siehe Quelle

Mohammed Sufian
quelle
3

Verwenden Sie get (0) .tagName. Siehe diesen Link

Amar
quelle
3

Verwenden Sie Nodename über tagName:

nodeName enthält alle Funktionen von tagName sowie einige weitere. Daher ist nodeName immer die bessere Wahl.

siehe DOM Core

Mike Rifgin
quelle