javascript - problème d'exécution d'événement jquery
ringa_lee
ringa_lee 2017-06-26 10:53:33
0
9
1061
function tableColor() {
    alert(0) //这里执行
    $(".table tr:odd").css("background", "#f8f8f8");
}  

第一种写法:
tableColor();//执行alert(0),弹出“0”,表格颜色**没有变化**。

第二种写法:
$(function() {
    tableColor();请输入代码
})
//弹出“0”,表格颜色变化了。

Pourquoi différentes méthodes d'écriture produisent-elles des résultats différents ? Logiquement, la même fonction n'en exécutera pas seulement la moitié.

ringa_lee
ringa_lee

ringa_lee

répondre à tous(9)
phpcn_u1582

$(function(){
//C'est le code qui est exécuté après le chargement de la page
})
Votre première façon d'écrire est qu'il est exécuté avant le chargement de la page, donc le DOM ne changera pas s'il n'est pas détecté. Coloré

黄舟

Le deuxième est l'abréviation de .ready(). Veuillez consulter la documentation pour plus de détails.

漂亮男人

Généralement, les références js sont placées dans le <head></head>里面,
第一种写法执行的时候,页面还没加载完,所以找不到$(".table tr:odd")sélecteur ;
Le deuxième type est exécuté après le chargement de la page, la couleur du sélecteur peut donc être modifiée.

Soit utilisez la deuxième méthode, soit ajoutez la référence js à la fin de la page.

三叔

Dans la première façon d'écrire, lorsque votre code est exécuté, l'élément table peut ne pas être chargé sur la page, donc l'élément peut ne pas être trouvé, donc il n'y aura pas de changement de couleur.
La deuxième façon d'écrire est d'attendre que les éléments de la page soient chargés avant d'exécuter votre code. Cela garantit que tous les éléments de la page ont été chargés et que le code peut trouver les éléments requis, donc les modifications correspondantes seront apportées

.
漂亮男人
$(function() {
    // DOM加载完毕
});

La différence entre vos deux appels est que la première fois que vous avez appelé $(".table tr:odd") alors que le DOM n'était pas chargé, vous n'avez peut-être pas obtenu l'élément correspondant. Vous pouvez l'imprimer pour voir, mais la deuxième fois, vous l'avez définitivement obtenu.

Il est recommandé de mettre JS 代码或引入的 JS 文件放在页面底部,<BODY> devant.

phpcn_u1582

Semblable à la réponse au premier étage, la première façon d'écrire, si elle est placée avant la balise .table et exécutée avant le chargement du dom, le sélecteur $ risque de ne pas pouvoir trouver le dom et la couleur ne peut pas être modifié.

Quant au second, il est recommandé de vérifier la description du document jquery. Je ne peux pas ouvrir le site officiel de jquery ici, je peux donc le lire depuis un autre endroit
http://www.css88.com/jqapi-1. ....

代言

1. Votre première méthode d'écriture consiste à l'exécuter lorsque la balise du document n'a pas été chargée. En d'autres termes, si votre code HTML n'a pas été chargé, vous ajoutez un style à .table tr:odd. Le script js ne saura pas de quel objet il s'agit, il ne sera donc pas défini. L'élément n'a pas fini de se charger. Cependant, il n'y a pas d'erreur de syntaxe dans la fonction, donc l'alerte 0
2.$(function(){}) sera toujours exécutée, c'est-à-dire qu'elle attendra que le code HTML soit chargé avant d'exécuter la méthode à l'intérieur. le temps, le code HTML a été chargé et le js sera capturé. Quel élément est cet objet afin qu'il puisse être stylisé.
Référence spécifique : http://www.w3school.com.cn/h.asp

小葫芦

Cette question se termine

迷茫

La première façon d'écrire :
tableColor();//Execute alert(0), "0" apparaît, mais le dom n'est pas sélectionné et le code est exécuté ligne par ligne

La deuxième façon d'écrire : exécuter après le chargement du document
$(function() {

tableColor();

})

Conclusion, l'introduction de js est placée en bas du document. En plus des fonctions personnalisées, les js internes en html sont écrits en $(function() {}) pour garantir que le code js est exécuté une fois le document terminé. exécuté

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!