Pergunta

Eu escrevi um plugin para termos destaque usados ??para encontrar um página . A fonte é também disponível .

O meu problema é que, se você olhar para linha do primeiro link de JavaScript, eu fiz uma função textPlacement personalizado para lidar com a inserção da barra de display (que parece um pouco como Stack Overflow do).

Como você pode ver, eu tenho um manipulador de eventos no botão que está inserido. Tenho codificado a remoção do bar, mas eu também gostaria de remover o destaque dos termos. O plugin tem um método para fazer isso chamado toggleTermHighlighting().

Como posso chamar esse método de dentro da função anônima na página de exemplo? Será que eu preciso para torná-lo this.toggleTermHighlighting = function() {}. Eu tentei passar em uma instância desse ao primeiro argumento, mas não conseguiu fazê-lo funcionar.

Desculpe, eu sempre parecem ter um momento difícil com escopo no JavaScript.

Alguém sabe o que eu poderia fazer para ser capaz de acessar esse método de dentro da função anônima a partir da página de exemplo?

Foi útil?

Solução

Eu acho que se você reestruturou a forma como a função foi definida dentro do plugin, que se tornaria um pouco mais fácil.

Alterar linha 128 de:

var toggleTermHighlighting = function() {

para:

this.toggleTermHighlighting = function() {

Em seguida, você pode fazer algo parecido com isso para acessar a função de um escopo totalmente diferente:

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

Esta seria uma resposta à sua pergunta, mas acho que uma abordagem diferente pode ser mais apropriado. Se você olhar para um monte de código jQuery UI, você pode passar uma string para o plugin e ele irá executar uma função para você. Então, você realmente pode apenas fazer algo como:

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

e em seguida, basta verificar-lo no topo de sua função, ou em uma função init () tipo

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

Outras dicas

Você vai ter que fazer "toggleTermHighlighting" uma função jQuery exposta em seu próprio direito, ou então expor sua funcionalidade como uma opção em seu método existente. Bem, se você queria fazer algo um pouco estranho, você poderia encher a função (e qualquer outra coisa que você quiser) em um elemento de dados sobre o objeto afetado (veja o jQuery "dados" função).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top