10
votes

Identifier $ (this) en jQuery

Quel est le meilleur moyen de savoir ce que $ (this) est actuellement égal à jQuery?

par exemple alerte (this); n'est pas beaucoup d'aide.

La raison pour laquelle je demande est qu'un morceau de code ne fait pas de quoi il devrait faire ce qu'il devrait faire après avoir déplacé le code dans une fonction.

L'extrait ci-dessous est maintenant dans une fonction et $ (ceci) semble maintenant se référer à Domwindow. xxx

Comment puis-je le garder comme $ (ceci) étant l'élément cliqué d'origine? < / p>


0 commentaires

4 Réponses :


24
votes

Quel est le meilleur moyen de savoir ce que $ (this) est actuellement égal à jQuery?

En l'enregistrant à la console de votre outil de débogage JavaScript préféré (comme barre d'outils de développeur Firebug ou chrome, par exemple): < Pré> xxx

qui retournera un objet emballé JQuery. Si vous souhaitez en savoir plus sur l'objet natif, vous pouvez utiliser: xxx

Si vous faites du développement JavaScript, vous devez utiliser un outil de débogage JavaScript. alerte n'est pas un tel outil.


Maintenant que vous avez mis à jour votre question avec une source de code, il semble que vous utilisiez $ (ceci) dans la portée globale. Ensuite, il fera référence à l'objet window . Si vous voulez faire référence à un élément cliqué ou quelque chose que vous devrez d'abord vous abonner à l'événement .Click: xxx

ou si vous vouliez externaliser ce code dans un séparé Fonction: xxx

ou: xxx


6 commentaires

Est-ce qu'il y a de toute façon pour la réduire? qui retourne beaucoup de données.


@CRAigward, oui, utilisez console.log (ceci); Pour enregistrer uniquement l'objet natif et non $ (this) .


@CRAigward, que voudriez-vous la réduire à ce moment-là? J'aimerais que ce soit comme $ (ceci) .attributshatiwantosee ()


Il renvoie Domwindow, dont les 100 enfants sont des objets. Est-ce normal?


@CRAigward, je ne sais pas si c'est normal. Cela dépendra de votre code et de la portée des variables. Quelles propriétés a-t-elle?


@CRAigworard Bien que Ce est probablement fenêtre ce qui signifie que vous avez un problème de contexte de fonction quelque part.



1
votes

avec le changement de code dans une fonction généralement la portée des changements de code. Donc, "ceci" ne fera plus référence à l'objet d'origine, mais plutôt à une nouvelle (ou à l'objet global "fenêtre"). Si vous nous montrez votre code, nous pourrons identifier le problème.


1 commentaires

Cela ressemble à le problème. Son retour au Domwindow. Existe-t-il un moyen de garder $ (ceci) quand dans la fonction?



0
votes

Je soupçonne que vous faites quelque chose comme ceci: xxx

dans ce cas clickhandler sera appelé dans le contexte de l'objet de la fenêtre. Pour préserver le contexte correct, changez simplement votre code en: xxx


0 commentaires

0
votes

Si vous souhaitez vérifier ce qui est passé autour de vous, vous pouvez utiliser ma version ou la version de JqueryLog de PRINZHORN. Cela devrait vous aider à identifier étape par étape ce qui se passe:

http://www.jquerylog.com / < Un href = "https://github.com/fmsf/jquerylog" rel = "nofollow"> https://github.com/fmsf/jquerylog

pour un appel comme: < / p> xxx

Vous obtiendrez une sortie comme celle-ci (qui identifie la DIV dans chaque étape: xxx


0 commentaires