$(document).on(“click”... pas de travail?
Est-il bien connu erreur que j'ai pu faire ici?
J'ai un script qui utilise .sur (), parce qu'un élément est généré dynamiquement, et il ne fonctionne pas. Juste pour tester, j'ai remplacé le sélecteur avec la dynamique de l'élément d'enveloppement, qui est statique, et il ne fonctionne toujours pas! Quand je suis passé à la plaine de vieux .cliquez sur pour l'écharpe, il a travaillé, si.
(Ce qui ne veut pas travailler pour l'élément dynamique de toute évidence, le seul qui compte.)
Cela fonctionne:
$("#test-element").click(function() {
alert("click");
});
Ce n'est pas le cas:
$(document).on("click","#test-element",function() {
alert("click");
});
Mise à JOUR:
J'ai cliqué droit et de fait "Inspecter l'Élément" dans Chrome il suffit de double-vérifier quelque chose, et puis après que l'événement click travaillé. J'ai actualisé et il n'a pas de travail, inspecter l'élément, puis il a travaillé. Qu'est-ce que cela signifie?
- Êtes-vous créer plus d'un élément avec le même ID ?
- Poster simplement le jQuery sans HTML, ce qui rend difficile de les aider.
- Hiya OP, veuillez vérifier la version de Jquery que vous utilisez,
:)
ou vers un violon, je pourrais vous aider, - Vous code est censé fonctionner. Le
on
fonction a été ajoutée dans jquery 1.7, assurez-vous d'avoir une version récente. Edit : la preuve pour vous qu'il fonctionne sur le violon - Votre deuxième exemple fonctionne avec la dernière 1.x version de jQuery: jsfiddle.net/AJPdS
- #test est l'élément dynamique ou l'emballage d'éléments dynamiques?
- #test est l'élément d'emballage. J'ai Jquery 1.10.2. (J'ai eu 1.9.2, mais j'ai mis à jour et il ne fonctionne toujours pas)
- Ensuite, essayez ce
$('#test-element').on("click","*",function()
ou$(document).on("click","#test-element *",function()
cela permettra de fixer gestionnaire d'événements pour les enfants. - Enveloppez-les dans du
$(document).ready()
- $(document).sur les() ne fonctionne pas, même pour l'écharpe, si.
- Fonctionne très bien ici: jsfiddle.net/j08691/TkLex
- Pouvez-vous fournir le code?
- Avez-vous essayé un autre navigateur?
- Je dirais que nous avons épuisé toutes nos suppositions. Nous aurons besoin de code à fournir toute autre idée.
- C'est bizarre, si vous déclenchez cliquez sur, cela fonctionne, si vous cliquez directement, il n'est pas fiddle.jshell.net/Palestinian/MEAkF
- votre violon fonctionne très bien si vous cliquez sur l'enfant.
- Encore une fois, êtes-vous l'insertion d'un élément avec le même ID d'un élément déjà existant. Si oui, cela ne fonctionnera jamais, peu importe ce que vous faites.
- Je vais revenir avec un peu de code lorsque j'ai eu la chance si je n'ai pas le comprendre, j'espérais que quelqu'un pense à s'en sortir. Merci pour la tentative, les gars. (C'est un 3000 ligne de la page)
- Je suis de l'iPad, sa ne marche pas même avec le tap, merci copain 🙂
- eh bien, si c'est de 3000 lignes de code, de s'assurer de quelque chose n'est pas à défaut d'avant.
- Ouais, il n'est pas. J'ai été vigoureusement les tests de chaque pièce que je la mettre en œuvre.
- Vous ne savez pas si quelqu'un l'a déclaré, mais si vous n'avez pas de travail sur cliquez d'abord, mais ensuite la deuxième, et rafraîchissant ne marche pas il est lié pendant le premier événement de clic. La liaison est incorrect.
- Essayez de vider le cache, ou lors de l'utilisation de l'outil d'inspection dans Chrome (DevTools), allez à l'onglet Réseau, puis cliquez sur Désactiver le cache
Vous devez vous connecter pour publier un commentaire.
Vous utilisez la syntaxe correcte pour la liaison au document pour écouter cliquez sur un événement pour un élément avec id="test-élément".
Ce n'est probablement pas de travail en raison de l'un des:
De la capture des événements sur les éléments qui sont créés APRÈS déclaration de vos écouteurs d'événement - il est conseillé de lier un élément parent, ou d'un élément supérieur dans la hiérarchie.
Par exemple:
Dans cet exemple, seul le "lié au document" alerte incendie.
JSFiddle avec jQuery 1.9.1
event.target
etevent.currentTarget
quelque part dans votre code, mais il y a beaucoup de choses qu'il pourrait être, y compris les événements de pointeur être désactivé sur le boutonVotre code devrait fonctionner, mais je suis conscient que la réponse ne vous aide pas. Vous pouvez voir un exemple de travail ici (jsfiddle).
Jquery:
Comme quelqu'un l'a déjà souligné, vous utilisez un ID au lieu d'une classe. Si vous avez plus qu'un élément de la page avec un ID, jquery sera de retour uniquement le premier élément avec ID. Il n'y aura pas d'erreurs, puisque c'est la façon dont il fonctionne. Si c'est le problème, vous remarquerez que l'événement click fonctionne pour le premier
test-element
mais pas pour n'importe qui suivent.Si ce n'est pas de décrire de manière précise les symptômes du problème, alors peut-être que le sélecteur est mauvais. Votre mise à jour m'amène à croire que c'est le cas en raison de l'inspection d'un élément, puis en cliquant à nouveau sur la page et cliquez sur le déclenchement de la. Ce qui pourrait être à l'origine de ce est si vous mettez l'écouteur d'événement sur le
document
au lieu detest-element
. Si donc, lorsque vous cliquez sur désactiver le document et à l'arrière (comme par le développeur de la fenêtre pour revenir au document) de l'évènement déclencheur. Si c'est le cas, vous noterez également que l'événement click est déclenchée si vous cliquez entre deux onglets différents (car ils sont deux différentsdocument
s et, par conséquent, vous en cliquant sur le document.Si aucune de ces sont la réponse, l'affichage HTML ira un long chemin vers essayer de le comprendre.
Un vieux post, mais j'aime partager des que j'ai le même cas, mais j'ai compris le problème :
Problème est le suivant : Nous faire une fonction pour travailler avec un élément HTML, mais l'élément HTML liées à cette fonction n'est pas encore créé (parce que l'élément a été généré dynamiquement). Pour en faire des œuvres, il faut faire de la fonction dans le même temps, nous avons créer l'élément. L'élément premier de faire en fonction de ça.
Seulement une parole, une fonction fonctionne uniquement à l'élément qui a créé avant de (lui). Tous les éléments créés dynamiquement après lui.
Mais s'il vous plaît consulter cet échantillon qui n'a pas tenu compte le cas ci-dessus :
Dynamiquement ajoutés :
Cette fonction est bien en cliquant sur le bouton :
ou vous pouvez utiliser le corps comme :
comparer à ce qui ne fonctionne pas :
espère que ça aidera
Essayez ceci:
Le document façon de faire est bizarre aussi. Qui serait logique pour moi si elle est utilisée pour un sélecteur de classe, mais dans le cas d'une pièce d'identité vous suffit probablement inutile DOM traversant là.
Dans le cas du sélecteur d'id, vous obtenez ce que l'élément instantanément.
$("#test-element").click(function() {
?.on
sans l'aide d'unselector
est le même que l'application directement de l'événement click sur elleDOM Ready
gestionnaireCela fonctionne:
Ici est la Violon