Est-il possible, à l'aide de jQuery, de connaître le type d'un élément avec jQuery? Par exemple, l'élément est-il div, span, select ou input?
Par exemple, si j'essaie de charger des valeurs dans une liste déroulante avec jQuery, mais que le même script peut générer du code dans un ensemble de boutons radio, pourrais-je créer quelque chose comme:
$('.trigger').live('click', function () {
var elementType = $(this).prev().attr(WHAT IS IT);
});
Dans une liste déroulante avec un bouton à côté duquel se trouve la classe trigger, ma variable elementType
devrait renvoyer select
lors de l'appui sur le bouton.
Obtenir l'élément taper la manière jQuery:
var elementType = $(this).prev().prop('nodeName');
faire la même chose sans jQuery
var elementType = this.previousSibling.nodeName;
Vérification du type d'élément spécifique:
var is_element_input = $(this).prev().is("input"); //true or false
aussi vous pouvez utiliser:
$("#elementId").get(0).tagName
vous devez utiliser la propriété tagName
et attr('type')
pour les entrées
Comme Distdev l'a mentionné, vous devez encore différencier le type d'entrée. C'est-à-dire,
$(this).prev().prop('tagName');
vous dira input
, mais cela ne fait pas la différence entre case à cocher/texte/radio. Si c'est une entrée, vous pouvez alors utiliser
$('#elementId').attr('type');
pour vous dire checkbox/text/radio, afin que vous sachiez de quel type de contrôle il s’agit.
vous pouvez utiliser .is()
:
$( "ul" ).click(function( event ) {
var target = $( event.target );
if ( target.is( "li" ) ) {
target.css( "background-color", "red" );
}
});
voir source
utilisez get (0) .tagName. Voir ce lien
Utilisez Nodename sur tagName:
nodeName contient toutes les fonctionnalités de tagName, ainsi que quelques autres. Par conséquent, nodeName est toujours le meilleur choix.
voir DOM Core