Je cherche un moyen de déboguer ce qu'un sélecteur JQuery revient. J'ai essayé d'utiliser Ce que j'essaie réellement de faire est de fixer un rappel aux boutons radio . Et donc j'essaie de faire quelque chose comme ceci: p> Malheureusement, rien ne se passe. P> Voici un exemple complet de ce que j'essaie de faire: p> tostring () code>, mais qui ne renvoie que [objet objet] code>. onclick code>
Sur l'un des boutons, je veux soumettre le formulaire joint. p>
3 Réponses :
Vous pouvez utiliser .length code> pour voir si elles ont trouvé quelque chose (le cas le plus commun), comme celui-ci:
$(".rating").stars({
cancelShow: false,
callback: function(ui, type, value, event) {
$(this).closest('form').each(function() {
alert($(this).html());
});
$(this).closest('form').ajaxSubmit();
}
});
Merci déjà d'aider à ce que $ (ceci) a la longueur 1 et tous mes essais de slecteurs différents ont une longueur 0.
@Fabian - essayez alerte (ce.nodename); code> Voir si c'est même le type d'élément que vous après?
oh bien nodename n'est indéfini, alors j'ai vraiment besoin d'un moyen de déboguer cela correctement :-(
@Fabian: partagez du code HTML et cela pourrait nous aider à mieux résoudre votre problème
@Fabian - $ (UI) .Clossest ('formulaire'). Ajaxsubmit (); code> peut être ce que vous êtes après.
Juste pour vous faire savoir, j'ai édité ma question originale avec un exemple HTML complet.
J'ai téléchargé le widget notation étoile (il ressemble à celui que vous utilisez ) Et certains creusant ... Le plug-in Stars supprime complètement les boutons radio et les remplace avec des div (Div et des liens. Lorsque vous sélectionnez une étoile, il enregistre la valeur dans une entrée cachée à l'intérieur du formulaire.
Donc, après avoir joué avec elle, j'ai trouvé que vous pouvez obtenir sur le formulaire à l'aide de Edit: Oh et si vous souhaitez accéder à vos boutons radio d'origine, ils sont enregistrés dans l'objet UI aussi à l'intérieur de UI. $ Formulaire code> , alors essayez ceci: p>
UI. $ RBOXS code>. L'extrait suivant alertera l'ID du bouton radio d'origine: P> $(function(){
$(".rating").children().not(":radio").hide();
$(".rating").stars({
cancelShow: false,
callback: function(ui, type, value, event)
{
alert( ui.$rboxs[(value-1)].id );
}
});
});
Merci à un million, cela a fonctionné comme un charme. Toute astuce Comment je pourrais déboguer cela à la prochaine fois? J'ai essayé d'utiliser Firebug, mais n'avait toujours aucune idée où j'étais dans le Dom et ce que mon sélecteur sélectionnait, etc ... de toute façon, de tout de temps merci pour l'aide!
En fait, j'ai utilisé Firebug pour le comprendre. Au lieu de alerte (UI) code> Utiliser console.debug (ui) code>. Il affichera l'objet (cliquable et ouvre une vue d'arborescence) dans la console que vous pouvez naviguer.
Merci pour la pointe avec la console, j'ai toujours été "non définie" et je n'ai pas essayé davantage. La solution consistait à ouvrir l'onglet Console et fonctionnent maintenant et je vois la vue sur l'arborescence et l'élément de formulaire :-)
J'apprends JQuery et c'est l'outil que j'ai fait pour m'aider à déboguer mes sélections. Vous pouvez la chaîner avec votre code et voir quelle est la sélection à ce stade. P>
.alert () => répertorie la première étiquette HTML de chaque élément de la sélection. Strong> p> Voir l'exemple ci-dessous. AVIS La boîte d'alerte pourrait ressembler à ceci: Â Â [Imaginez une boîte d'alerte répertorie certains éléments] P> Voici l'outil: P>
(Impossible de poster l'image avant d'avoir 10 points) P> (function ($) {
// Lists out each element's first tag in alert box, chainable
$.fn.alert = function (message) {
if (typeof message === 'undefined') message = "";
this.each(function () {
message += "\n" + this.outerHTML.match(/<[a-z]+\b(?:[^'">]*|"[^"]*"|'[^']*')*>/)[0];
});
console.log(message);
alert(message);
return this;
};
}(jQuery));