72 votes

Comment puis-je déterminer le type d'élément de symétrie de l'élément en jQuery?

Je suis correspondant ASP.Net les éléments générés par le nom de l'ID, mais j'ai quelques éléments qui peuvent rendre que des zones de texte ou des étiquettes en fonction du contexte de la page. J'ai besoin de comprendre si le match est à une zone de texte ou l'étiquette pour savoir si pour obtenir le contenu en val() ou en html().

$("[id$=" + endOfIdToMatch + "]").each(function () {
    //determine whether $(this) is a textbox or label
    //do stuff
});

J'ai trouvé une solution qui ne fonctionne pas, elle retourne "undefined":

$("[id$=" + endOfIdToMatch + "]").each(function () {
    alert($(this).tagName);
});

Ce qui me manque?

92voto

Tomalak Points 150423

Juste un jQuery trop:

$("[id$=" + endOfIdToMatch + "]").each(function () {
    alert(this.tagName);
});

32voto

Christian Davén Points 4527

Envisager cette solution sans l'aide de chacun():

var elements = $("[id$=" + endOfIdToMatch + "]");
var vals = elements.is("input").val();
var htmls = elements.is("label").html();
var contents = vals.concat(htmls);

Jetez un oeil à la documentation de est.

24voto

Jelgab Points 760

vous pouvez également utiliser quelque chose comme ceci:

if ($(this).is('input:checkbox'))

remplacer "ce" avec tout ce temps vous avez besoin et de "case" avec ce type d'entrée que vous avez besoin.

6voto

CMPalmer Points 4760

Première fois que j'ai répondu à ma propre question. Après un peu plus de l'expérimentation:

$("[id$=" + endOfIdToMatch + "]").each(function () {
   alert($(this).attr(tagName));
});

œuvres!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X