Помощь с вызовом внутреннего метода плагина jQuery [закрыто]

StackOverflow https://stackoverflow.com/questions/1600800

Вопрос

Я написал плагин для выделения терминов, используемых для поиска страницы.Источник так же доступно.

Моя проблема в том, что если вы посмотрите на встроенный JavaScript первой ссылки, я создал специальную функцию textPlacement для обработки вставки панели отображения (она немного похожа на функцию Stack Overflow).

Как видите, у меня есть обработчик событий для вставленной кнопки.Я запрограммировал удаление панели, но мне также хотелось бы убрать выделение терминов.В плагине есть метод для этого, называемый toggleTermHighlighting().

Как я могу вызвать этот метод изнутри анонимной функции на странице примера?Нужно ли мне это сделать? this.toggleTermHighlighting = function() {}.Я попытался передать экземпляр этого в первый аргумент, но не смог заставить его работать.

Извините, у меня всегда были трудности с областью видимости в JavaScript.

Кто-нибудь знает, что я могу сделать, чтобы получить доступ к этому методу изнутри анонимной функции со страницы примера?

Это было полезно?

Решение

Я думаю, если бы вы изменили способ определения функции внутри плагина, это стало бы немного проще.

Измените строку 128 с:

var toggleTermHighlighting = function() {

к:

this.toggleTermHighlighting = function() {

Затем вы можете сделать что-то вроде этого, чтобы получить доступ к функции из совершенно другой области:

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

Это было бы ответом на ваш вопрос, но я думаю, что более подходящим может быть другой подход.Если вы посмотрите на большую часть кода пользовательского интерфейса jQuery, вы можете передать строку в плагин, и он выполнит за вас функцию.Итак, вы могли бы просто сделать что-то вроде:

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

а затем просто проверьте его в верхней части вашей функции или в функции типа init().

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

Другие советы

Вам нужно будет сделать " toggleTermHighlighting " открытая функция jQuery сама по себе, или же представить ее функциональность в качестве опции для вашего существующего метода. Что ж, если вы хотите сделать что-то немного странное, вы можете вставить функцию (и все, что вам нравится) в элемент данных на затронутом объекте (см. Функцию jQuery " data ").

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top