7
votes

Débogage de la valeur de retour d'un sélecteur JQuery

Je cherche un moyen de déboguer ce qu'un sélecteur JQuery revient. J'ai essayé d'utiliser tostring () , mais qui ne renvoie que [objet objet] .

Ce que j'essaie réellement de faire est de fixer un rappel aux boutons radio . Et onclick Sur l'un des boutons, je veux soumettre le formulaire joint.

donc j'essaie de faire quelque chose comme ceci: xxx

Malheureusement, rien ne se passe.

Voici un exemple complet de ce que j'essaie de faire: xxx


0 commentaires

3 Réponses :


4
votes

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();
  }
});


6 commentaires

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); 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 (); peut être ce que vous êtes après.


Juste pour vous faire savoir, j'ai édité ma question originale avec un exemple HTML complet.



2
votes

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 UI. $ Formulaire code> , alors essayez ceci: p> xxx pré>


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. $ 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 );
        }
    });
});


3 commentaires

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) Utiliser console.debug (ui) . 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 :-)



0
votes

Sélection de débogage / show jQuery avec jquery.alert ()

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 .ALERTERERT () STRUT> après le .Find (): => JSFIDDLE A > p> xxx pré>

La boîte d'alerte pourrait ressembler à ceci:
(Impossible de poster l'image avant d'avoir 10 points) P>

  [Imaginez une boîte d'alerte répertorie certains éléments] P>

Voici l'outil: 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));


0 commentaires