<div id="test"></div>
<script>
$(document).ready(function() {
alert($('#test').id);
});
</script>
Pourquoi les éléments ci-dessus ne fonctionnent-ils pas et comment dois-je procéder?
jquery
jquery-selectors
fearofawhackplanet
la source
la source
Réponses:
La manière jQuery:
Dans votre exemple:
Ou via le DOM:
ou même :
et la raison derrière l'utilisation de
$('#test').get(0)
dans JQuery ou même$('#test')[0]
est qu'il$('#test')
s'agit d'un sélecteur JQuery et renvoie un tableau () de résultats et non un seul élément par sa fonctionnalité par défautune alternative pour le sélecteur DOM dans jquery est
qui diffère de la propriété DOM spécifiée
.attr()
et$('#test').prop('foo')
la capturefoo
, tandis qu'elle$('#test').attr('foo')
saisit l'foo
attribut HTML spécifié et vous pouvez trouver plus de détails sur les différences ici .la source
$('#test').id()
.$('selector').attr('id')
renverra l'id du premier élément correspondant. Référence .Si votre ensemble correspondant contient plusieurs éléments, vous pouvez utiliser l'
.each
itérateur conventionnel pour renvoyer un tableau contenant chacun des identifiants:Ou, si vous êtes prêt à devenir un peu plus grincheux, vous pouvez éviter le wrapper et utiliser le
.map
raccourci .la source
retval.push($(this).attr('id'))
peut être écritretval.push(this.id)
return $('.selector').map(function(i, dom){ return $(dom).attr('data-id'); })
id
est une propriété d'un htmlElement
. Cependant, lorsque vous écrivez$("#something")
, il retourne un objet jQuery qui encapsule les éléments DOM correspondants. Pour récupérer le premier élément DOM correspondant, appelezget(0)
Sur cet élément natif, vous pouvez appeler id, ou toute autre propriété ou fonction DOM native.
C'est la raison pour laquelle
id
ne fonctionne pas dans votre code.Alternativement, utilisez la
attr
méthode de jQuery car d'autres réponses suggèrent d'obtenir l'id
attribut du premier élément correspondant.la source
Les réponses ci-dessus sont excellentes, mais au fur et à mesure que jquery évolue .. vous pouvez également faire:
la source
attr()
été ajouté en 1.0 et aprop()
été ajouté en 1.6, donc je suppose que votre commentaireprop()
est la nouvelle façon.attr
) ou potentiellement modifiée par script (prop
). Si vous ne modifiez pas réellement l'id
attribut d'un élément à l'aide d'un script côté client, alorsprop
etattr
sont identiques.Un certain code de vérification est requis, mais facile à mettre en œuvre!
la source
.id
n'est pas une fonction jquery valide. Vous devez utiliser la.attr()
fonction pour accéder aux attributs d'un élément. Vous pouvez utiliser.attr()
à la fois pour modifier une valeur d'attribut en spécifiant deux paramètres ou pour obtenir la valeur en spécifiant un.http://api.jquery.com/attr/
la source
Si vous souhaitez obtenir l'ID d'un élément, disons par un sélecteur de classe, lorsqu'un événement (dans ce cas, cliquez sur événement) a été déclenché sur cet élément spécifique, alors ce qui suit fera le travail:
la source
$('#test').attr('id')
Dans votre exemple:la source
Eh bien, il semble qu'il n'y ait pas eu de solution et je voudrais proposer ma propre solution qui est une extension du prototype JQuery. Je mets cela dans un fichier d'aide qui est chargé après la bibliothèque JQuery, d'où la vérification de
window.jQuery
Ce n'est peut-être pas parfait, mais c'est un début pour peut-être obtenir l'inclusion dans la bibliothèque JQuery.
Renvoie une valeur de chaîne unique ou un tableau de valeurs de chaîne. Le tableau de valeurs de chaîne est pour l'événement où un sélecteur multi-éléments a été utilisé.
la source
$('#test')
renvoie un objet jQuery, vous ne pouvez donc pas utiliser simplementobject.id
pour obtenir sonId
vous devez utiliser
$('#test').attr('id')
, ce qui renvoie votre requisID
de l'élémentCela peut également être fait comme suit,
$('#test').get(0).id
ce qui est égal àdocument.getElementById('test').id
la source
$('#test')[0].id
qui est le même que.get(0)
Peut-être utile pour d'autres qui trouvent ce fil. Le code ci-dessous ne fonctionnera que si vous utilisez déjà jQuery. La fonction renvoie toujours un identifiant. Si l'élément n'a pas d'identifiant, la fonction génère l'identifiant et l'ajoute à l'élément.
Comment utiliser:
la source
En utilisant le code ci-dessus, vous pouvez obtenir l'identifiant.
la source
C'est une vieille question, mais à partir de 2015, cela pourrait fonctionner:
Et vous pouvez également effectuer des affectations:
Tant que vous définissez le plugin JQuery suivant:
Fait intéressant, si
element
est un élément DOM, alors:la source
Puisque l' id est un attribut, vous pouvez l'obtenir en utilisant la
attr
méthode.la source
Cela peut être l'ID d'élément, la classe ou utiliser automatiquement
la source
Important: si vous créez un nouvel objet avec jQuery et liez un événement, vous DEVEZ utiliser prop et non attr , comme ceci:
$("<div/>",{ id: "yourId", class: "yourClass", html: "<span></span>" }).on("click", function(e) { alert($(this).prop("id")); }).appendTo("#something");
la source
Cela résoudra enfin vos problèmes:
disons que vous avez plusieurs boutons sur une page et que vous souhaitez en changer un avec jQuery Ajax (ou non ajax) en fonction de leur ID.
permet également de dire que vous disposez de nombreux types de boutons différents (pour les formulaires, pour l'approbation et à des fins similaires), et que vous souhaitez que jQuery traite uniquement les boutons "similaires".
voici un code qui marche: le jQuery ne traitera que les boutons qui sont de classe .cls-hlpb, il prendra l'id du bouton sur lequel on a cliqué et le changera en fonction des données qui viennent de l'ajax.
le code a été extrait de w3schools et modifié.
la source
la source
il ne répond pas au PO, mais peut être intéressant pour d'autres: vous pouvez accéder au
.id
champ dans ce cas:la source