Maison > Questions et réponses > le corps du texte
Une erreur sera signalée lorsque le clic sur Afficher n'est pas défini
Pourquoi simplement mettre la fonction show() en dehors de $(function(){}) ?
typecho2017-07-05 10:39:03
Le code HTML que vous ajoutez est une chaîne et l'événement dans onclick est show(). Si la méthode d'un objet spécifique n'est pas spécifiée, elle sera par défaut la méthode globale et $(function(){}) est une fermeture.
给我你的怀抱2017-07-05 10:39:03
Écris-le comme ça
$(function() {
leftMenu();
function show() {
alert('hhhhhhhh');
}
function leftMenu() {
var html = '<p class="show" onclick="'+show()+'">click me</dv>'
$('#box').append(html);
}
})
Appelez show() directement et il sera exécuté immédiatement. S'il est écrit comme onclick="show()", $(document).ready() est exécuté une fois le document chargé. Lorsque la structure de la page est terminée, vous. cliquez pour déclencher show (), à ce moment, vous rechercherez show() sous la fenêtre. Bien sûr, le résultat n'est pas défini. Si vous voulez vraiment l'écrire dans $(funciton(){}), vous pouvez le faire. ceci :
$(function() {
leftMenu();
/*function show() {
alert('hhhhhhhh');
}*/
function leftMenu() {
var html = '<p class="show">click me</dv>'
$('#box').append(html);
}
//做个事件委托
$('body').on('click', $('.show'), function() {
alert('aaaaa')
})
})
怪我咯2017-07-05 10:39:03
La fonction show se trouve à l'intérieur d'une fonction anonyme. La liaison onclick effectuera une recherche globale et ne trouvera pas les éléments définis dans la fonction anonyme
天蓬老师2017-07-05 10:39:03
onclick trouvera la fonction personnalisée show() sous l'objet window, qui est window.shou(). . Il doit donc être placé en dehors de la fonction $(function(){}). . Par conséquent, à l'avenir, toutes les fonctions personnalisées devraient être écrites en dehors de $(function(){}), et certains traitements et appels ultérieurs devraient être placés à l'intérieur de $(function(){}) pour garantir qu'ils sont appelés une fois le document terminé. chargé
黄舟2017-07-05 10:39:03
En langage clair : $(function(){}) consiste à exécuter le contenu après l'exécution du document
Et vous avez ajouté la liaison après le chargement du document. Show() n'a pas été trouvé lors de l'exécution du HTML, veuillez l'adopter
某草草2017-07-05 10:39:03
En fait, il s'agit d'un problème causé par la portée de js. onclick="show()" exécute la méthode show() dans window, mais une telle méthode n'existe pas dans Window.
伊谢尔伦2017-07-05 10:39:03
Parce que $(function(){}) = $.ready(), c'est-à-dire que la fonction show est déclarée après le chargement de la page, mais vous écrivez show() dans l'événement onclick en ligne, et la fonction show à ce moment, il n'y a pas encore de déclaration, elle sera donc signalée comme non définie
typecho2017-07-05 10:39:03
Mettez la définition de la méthode show au-dessus du menu de gauche