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.


Können Sie umformulieren? Was meinst du mit Elementtyp?
Abdul Munim


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

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

26

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


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.


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



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

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.