Question

J'ai écrit un plug-in soulignant les termes utilisés pour rechercher un page . La source est également disponible .

Mon problème est que, si vous regardez le code JavaScript en ligne du premier lien, j'ai créé une fonction textPlacement personnalisée pour gérer l'insertion de la barre d'affichage (elle ressemble un peu à celle de Stack Overflow).

Comme vous pouvez le constater, j’ai un gestionnaire d’événements sur le bouton qui est inséré. J'ai codé la suppression de la barre, mais j'aimerais également supprimer la mise en évidence des termes. Le plugin dispose d’une méthode appelée toggleTermHighlighting () .

Comment puis-je appeler cette méthode depuis l'intérieur de la fonction anonyme sur la page d'exemple? Aurais-je besoin d'en faire this.toggleTermHighlighting = function () {} . J'ai essayé de passer d'une instance de ceci au premier argument, mais je ne pouvais pas le faire fonctionner.

Désolé, il semble que j’ai toujours du mal à utiliser JavaScript en tant que portée.

Quelqu'un sait-il ce que je pourrais faire pour pouvoir accéder à cette méthode à partir de la fonction anonyme de la page d'exemple?

Était-ce utile?

La solution

Je pense que si vous restructuriez la manière dont la fonction était définie dans le plug-in, cela deviendrait un peu plus facile.

Modifier la ligne 128 de:

var toggleTermHighlighting = function() {

à:

this.toggleTermHighlighting = function() {

Ensuite, vous pouvez faire quelque chose comme ceci pour accéder à la fonction depuis un tout autre champ:

var myPlug = new $.fn.searchTermsHighlight();
myPlug.toggleTermHighlighting();

Ce serait une réponse à votre question, mais je pense qu'une approche différente pourrait être plus appropriée. Si vous regardez beaucoup de code de l'interface utilisateur jQuery, vous pouvez passer une chaîne dans le plug-in et celui-ci exécutera une fonction pour vous. Donc, vous pouvez réellement faire quelque chose comme:

$('body').searchTermsHighlight('toggle');

puis vérifiez-le en haut de votre fonction ou dans une fonction de type init ()

if (options === 'toggle'){ toggleTermHighlighting(); return this; }

Autres conseils

Vous allez devoir faire "toggleTermHighlighting". une fonction jQuery exposée à part entière, ou exposer ses fonctionnalités en tant qu’option sur votre méthode existante. Eh bien, si vous voulez faire quelque chose d'un peu bizarre, vous pouvez insérer la fonction (et tout ce que vous voulez) dans un élément de données sur l'objet affecté (voir la fonction jQuery "data").

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top