Je suis au milieu d'écrire un plugin et je voudrais pouvoir obtenir le sélecteur d'origine que JQuery a utilisé l'objet. p>
Donc, si vous vouliez appliquer quelque chose comme idflings () code> Vous pouvez obtenir toutes les frères et sœurs de ce type, qu'il s'agisse de frères et sœurs d'une certaine classe ou de frères et sœurs d'un certain type d'élément. < / p>
jQuery ('div') code> -
'div' code> li>
jQuery (jQuery ('div')) code> -
'[jQuery] objet' // nécessiterait de rechercher récursivement le sélecteur de ce code> li>
jQuery ('# eLment') code> -
'# élément' code> li>
jQuery ('. classe') code> -
'. Classe' code> li>
ul>
3 Réponses :
Il suffit d'accéder au sélecteur code>
propriété:
console.log($("div").selector); // 'div' console.log($("#foo").selector); // '#foo'
Est-ce que vous plaisantez!? Je suis allé dans api.jquery.com et cherché sélecteur et tout ce qu'il a sauté était le "[ancêtre descendant]" BS et typique jQuery ("[sélecteur]") non-sens ... aucune aide. -- Merci! - Savez-vous où se trouve la documentation?
@ Vol7ron - Je ne pense pas que cela soit documenté. Venez penser à cela, je ne me souviens pas comment je l'ai découvert.
Malheureusement, jQuery ('. Nom de classe'). chacun (fonction () {jQuery (this) .selector}); code> renvoie une chaîne vide;
Vous pouvez le voir ici: code.jquery.com/jquery-1.6.2.js Regardez dans la fonction init code>. Il a une ligne comme ceci:
ceci.selector = sélecteur; code> si le sélecteur est en chaîne. Si le sélecteur est sur un objet avec une propriété de sélecteur, il a ceci:
ceci.selector = sélecteur.selector.selector; code> il gérera même le cas "récursif"
@ Vol7ron - c'est parce que jQuery (this) code> construit un objet jQuery avec un domemilement au lieu d'un sélecteur.
Droite, j'aimerais que cela revienne des objets pour ces cas, que je pourrais vérifier.
Je suppose que je devrais stocker l'objet d'origine dans une variable tempe et l'appeler à ce sujet? var t = $ ('. CNAME'); t.ach (fonction () {$ (ceci) .Data ('sélecteur', t.selector)}); code> - quelque chose à cet effet
.Selector code> La propriété a été obsolète en 1.7
comme une extension de ce que Karim a mis:
Je ne suis pas sûr qu'il y ait un moyen de faire référence au constructeur de racine JQuery de l'objet DOM, comme vous l'avez noté. J'ai donc pris cela que la mise en cache de l'objet JQuery était la seule façon. (Je n'ai fait qu'une réponse que je l'avais pour une référence future)
https://apl.jquerery.com/selector/ .... p>
La propriété .Selector a été obsolète dans JQuery 1.7 et n'est maintenue que dans la mesure nécessaire pour soutenir .Live () dans le plug-in jQuery migrer. Il peut être supprimé sans préavis dans une version future. La propriété n'a jamais été un indicateur fiable du sélecteur qui pourrait être utilisé pour obtenir l'ensemble des éléments actuellement contenus dans le jeu de jQuery dans lequel il s'agissait d'une propriété, car les méthodes trershases ultérieures peuvent avoir modifié l'ensemble. strong> plugins Cela doit utiliser une chaîne de sélecteur dans leur plug-in peut nécessiter un paramètre de la méthode. Par exemple, un plug-in "foo" pourrait être écrit comme $ .fn.foo = fonction (sélecteur, options) {/ * Le code du plug-in est ici * /}; et la personne utilisant le plug-in écrirait $ ("Div.Bar ") .foo (" div.bar ", {chien:" aboyer "}); avec le sélecteur "div.bar" répété comme premier argument de .foo () fort>. p>
blockQuote>
Bonne mise à jour - on dirait que le contexte + les propriétés de sélecteur ont été abandonnés. Curieux de l'incorporer dans la réponse sélectionnée - devrait-il être ajouté comme un commentaire à cette réponse à la place?
Je viens d'ajouter un commentaire aussi bien basé sur vos commentaires. Cependant, je suis hésitant à le faire à la place d'une nouvelle réponse depuis de nombreuses (ou du moins de moi;)) Scannez bien les réponses avant de creuser dans les commentaires individuels. Si ma réponse est correcte, éventuellement une "mise à jour" sur la réponse d'origine serait probablement une bonne idée.
C'est ce que je ressens aussi, je suis incertain comment gérer cela pour les différentes versions de JQuery