Table des matières
Exemple 2
Filtre
Que devez-vous prendre
Maison interface Web js tutoriel Conseils destinés aux débutants : ne plongez pas trop profondément dans jQuery

Conseils destinés aux débutants : ne plongez pas trop profondément dans jQuery

Aug 30, 2023 am 11:49 AM

新手友好建议:不要深入 jQuery

En tant qu'éditeur pour Nettuts+, je peux réviser beaucoup de code dans les tutoriels soumis. Même si jQuery existe depuis de nombreuses années, il y a une erreur courante que je vois encore le plus souvent.


Exemple #1

Considérez le code suivant :

$('.nav a').click(function() {
  $(this).hide();
  $(this).css('color', 'red');
  $(this).show();

  alert('something else');

  $(this).hide();

  return false;
});
Copier après la connexion

Le code ci-dessus est trop complexe pour plusieurs raisons. Ne vous inquiétez pas de ce que fait réellement le code (c'est du charabia). Au lieu de cela, je veux que vous regardiez toutes les références à $(this).

Pensez au DOM comme à une piscine.

Pensez au DOM comme à une piscine. Vous vous souvenez quand vous étiez enfant et que vous sautiez dans la piscine à la recherche de pièces de monnaie pendant que vos parents faisaient comme s'ils vous regardaient ? Ce sera notre comparaison dans le monde réel.

Chaque fois que $('.someClass') est utilisé, jQuery sautera dans le pool (DOM) et recherchera cette pièce (ou nœud). Ainsi, lorsque vous le référencez plusieurs fois dans une fonction, vous aurez besoin de beaucoup de plongée. Ou, d’après une comparaison avec le monde réel, inutile et inutile. Pourquoi appeler jQuery si ce n'est pas nécessaire ? Vous devriez faire ce que nous appelons la « mise en cache ».

$('.nav a').click(function(e) {
   var anchor = $(this);

   anchor
      .hide()
     .css('color', 'red')
     .show();

   alert('something else');

   anchor.hide();

   e.preventDefault();

});
Copier après la connexion

C'est beaucoup plus propre de cette façon. Même si les moteurs de navigation modernes sont désormais incroyablement rapides et feront de leur mieux pour compenser votre mauvais codage, vous devez toujours vous efforcer d’écrire un code efficace et éviter de gaspiller toute votre énergie à sauter dans la piscine. Maintenant, techniquement parlant, si vous transmettez à jQuery un nœud DOM, comme this, il ne réinterrogera pas le DOM. Il renvoie simplement un objet jQuery.

Honnêtement, puisque la différence de performances entre les deux est négligeable, nous écrivons nous-mêmes du code propre.

Exemple 2

Prenons un exemple un peu plus complexe : les onglets.

$('.tabs li').css('position', 'relative');

$('.tabs li').click(function() {
   $('.tabs li').removeClass('active');
   $(this).addClass('active');
   $(this).load('someHref', function() {} ); // example
   $(this).css('top', '1px');
});
Copier après la connexion

Ce code est partout. C'est moche et inefficace. La première solution consiste à supprimer tous les CSS. Les styles ne peuvent être placés en JavaScript que si la valeur est créée dynamiquement. Par exemple, si vous devez calculer la position précise d'un élément sur l'écran, vous pouvez utiliser .css('left',calculatedValue). Dans ce cas, vous pouvez exporter le tout vers une feuille de style externe. Cela nous laisse avec :

$('.tabs li').click(function() {
   $('.tabs li').removeClass('active');
   $(this).load('someHref', function() {} ); // example
   $(this).addClass('active');
});
Copier après la connexion

Ensuite, pourquoi continuons-nous à interroger le DOM pour .tabs li et .tabs li$(this)?别再在泳池里跳了。让我们“缓存” .tabs li ? Arrêtez de sauter dans la piscine. "Mettons en cache" l'emplacement de .tabs li.

var tabs = $('.tabs li');

tabs.click(function() {
   tabs.removeClass('active');
   $(this).load('someHref', function() {} ); // example
   $(this).addClass('active');
});
Copier après la connexion

c'est mieux, mais on appelle quand même $(this) deux fois, ce n'est pas grave. Cependant, d’après mon expérience, si ce problème n’est pas étouffé tôt dans l’œuf, ce nombre peut rapidement augmenter.

var tabs = $('.tabs li');

tabs.click(function() {
   var tab = $(this);
   tabs.removeClass('active');
   tab.addClass('active')
     .load('someHref', function() {} ); // example
});
Copier après la connexion

Filtre

Une autre option (moins optimisée) consiste à utiliser le filtrage.

var tabs = $('.tabs li');

tabs.click(function() {
   tabs.removeClass('active')
       .filter(this)
       .addClass('active')
       .load('someHref', function() {} ); // example
});
Copier après la connexion

La différence dans cet exemple est qu'au lieu de référencer $(this),而是使用 filter(), nous utilisons la méthode filter() pour réduire la collection d'éléments de la liste aux seuls éléments cliqués.


Que devez-vous prendre

Oui, le monde ne s'arrête pas si vous référencez $('.tabs) plusieurs fois dans une fonction. Les moteurs JavaScript sont très rapides de nos jours. Si vous deviez tester les performances de cette opération des milliers de fois, la différence d'exécution pourrait être de quelques centaines de millisecondes. Mais la question demeure : pourquoi feriez-vous cela ?

Parfois, lorsque nous travaillons avec de nombreuses abstractions comme jQuery, il est facile d'oublier que $('.tabs') est une véritable fonction qui exécute beaucoup de code. Il convient également de noter que ces concepts s'appliquent à JavaScript en général, et pas seulement à jQuery.

Écrivez-vous un code plus propre en utilisant les caching techniques ci-dessus.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Remplacer les caractères de chaîne en javascript Remplacer les caractères de chaîne en javascript Mar 11, 2025 am 12:07 AM

Explication détaillée de la méthode de remplacement de la chaîne JavaScript et de la FAQ Cet article explorera deux façons de remplacer les caractères de chaîne dans JavaScript: le code JavaScript interne et le HTML interne pour les pages Web. Remplacer la chaîne dans le code JavaScript Le moyen le plus direct consiste à utiliser la méthode Remplace (): str = str.replace ("trouver", "remplacer"); Cette méthode remplace uniquement la première correspondance. Pour remplacer toutes les correspondances, utilisez une expression régulière et ajoutez le drapeau global G: str = str.replace (/ fi

jQuery Vérifiez si la date est valide jQuery Vérifiez si la date est valide Mar 01, 2025 am 08:51 AM

Des fonctions JavaScript simples sont utilisées pour vérifier si une date est valide. fonction isValidDate (s) { var bits = s.split ('/'); var d = new Date (bits [2] '/' bits [1] '/' bits [0]); return !! (d && (d.getMonth () 1) == bits [1] && d.getDate () == Number (bits [0])); } //test var

jQuery obtient un rembourrage / marge d'élément jQuery obtient un rembourrage / marge d'élément Mar 01, 2025 am 08:53 AM

Cet article explique comment utiliser jQuery pour obtenir et définir les valeurs de marge et de marge intérieures des éléments DOM, en particulier les emplacements spécifiques de la marge extérieure et des marges intérieures de l'élément. Bien qu'il soit possible de définir les marges intérieures et extérieures d'un élément à l'aide de CSS, l'obtention de valeurs précises peut être délicate. // installation $ ("div.header"). CSS ("marge", "10px"); $ ("div.header"). css ("padding", "10px"); Vous pourriez penser que ce code est

10 onglets jQuery Accordion 10 onglets jQuery Accordion Mar 01, 2025 am 01:34 AM

Cet article explore dix onglets jQuery exceptionnels et accordéons. La principale différence entre les onglets et les accordéons réside dans la façon dont leurs panneaux de contenu sont affichés et cachés. Plongeons ces dix exemples. Articles connexes: 10 plugins de l'onglet jQuery

10 vaut la peine de vérifier les plugins jQuery 10 vaut la peine de vérifier les plugins jQuery Mar 01, 2025 am 01:29 AM

Découvrez dix plugins jQuery exceptionnels pour élever le dynamisme et l'attrait visuel de votre site Web! Cette collection organisée offre diverses fonctionnalités, de l'animation d'image aux galeries interactives. Explorons ces outils puissants: Related Posts: 1

Http débogage avec le nœud et le http-console Http débogage avec le nœud et le http-console Mar 01, 2025 am 01:37 AM

HTTP-Console est un module de nœud qui vous donne une interface de ligne de commande pour exécuter les commandes HTTP. C'est idéal pour le débogage et voir exactement ce qui se passe avec vos demandes HTTP, qu'elles soient faites contre un serveur Web, Web Serv

Tutoriel de configuration de l'API de recherche Google personnalisé Tutoriel de configuration de l'API de recherche Google personnalisé Mar 04, 2025 am 01:06 AM

Ce tutoriel vous montre comment intégrer une API de recherche Google personnalisée dans votre blog ou site Web, offrant une expérience de recherche plus raffinée que les fonctions de recherche de thème WordPress standard. C'est étonnamment facile! Vous pourrez restreindre les recherches à Y

jQuery Ajouter une barre de défilement à div jQuery Ajouter une barre de défilement à div Mar 01, 2025 am 01:30 AM

L'extrait de code jQuery suivant peut être utilisé pour ajouter des barres de défilement lorsque le contenu DIV dépasse la zone de l'élément de conteneur. (Pas de démonstration, veuillez le copier directement sur Firebug) // d = document // w = fenêtre // $ = jQuery var contentArea = $ (this), wintop = contentArea.scrollTop (), docheight = $ (d) .height (), winheight = $ (w) .height (), divheight = $ ('# c

See all articles