Domanda

Ho scritto un per evidenziare i termini utilizzati per trovare un pagina . La fonte è disponibile anche .

Il mio problema è che, se si guarda JavaScript incorporato nel primo collegamento, ho creato una funzione textPlacement personalizzata per gestire l'inserimento della barra di visualizzazione (sembra un po 'come Stack Overflow).

Come puoi vedere, ho un gestore eventi sul pulsante che viene inserito. Ho codificato la rimozione della barra, ma vorrei anche rimuovere l'evidenziazione dei termini. Il plugin ha un metodo per farlo chiamato toggleTermHighlighting () .

Come posso chiamare quel metodo dall'interno della funzione anonima nella pagina di esempio? Dovrei farlo this.toggleTermHighlighting = function () {} . Ho provato a passare un'istanza di questo al primo argomento, ma non sono riuscito a farlo funzionare.

Mi dispiace, mi sembra sempre di avere dei momenti difficili con l'ambito in JavaScript.

Qualcuno sa cosa potrei fare per poter accedere a quel metodo dall'interno della funzione anonima dalla pagina di esempio?

È stato utile?

Soluzione

Penso che se ristrutturassi il modo in cui la funzione è stata definita all'interno del plugin, diventerebbe un po 'più semplice.

Cambia la riga 128 da:

var toggleTermHighlighting = function() {

a:

this.toggleTermHighlighting = function() {

Quindi puoi fare qualcosa del genere per accedere alla funzione da un ambito totalmente diverso:

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

Questa sarebbe una risposta alla tua domanda, ma penso che un approccio diverso potrebbe essere più appropriato. Se guardi molto del codice dell'interfaccia utente jQuery, puoi passare una stringa nel plugin e eseguirà una funzione per te. Quindi potresti effettivamente fare qualcosa del tipo:

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

e quindi controllalo nella parte superiore della tua funzione o in una funzione di tipo init ()

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

Altri suggerimenti

Dovrai creare " toggleTermHighlighting " una funzione jQuery esposta a sé stante, oppure esporre la sua funzionalità come opzione sul metodo esistente. Bene, se volessi fare qualcosa di un po 'strano, potresti inserire la funzione (e qualsiasi altra cosa ti piaccia) in un elemento dati sull'oggetto interessato (vedi la funzione jQuery "data "").

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top