문제

나는 a 페이지를 찾는 데 사용되는 용어를 강조하는 플러그인. 출처입니다 또한 이용 가능한.

내 문제는, 첫 번째 링크의 인라인 JavaScript를 보면 디스플레이 바의 삽입을 처리하기 위해 사용자 정의 텍스트 배치 기능을 만들었습니다 (스택 오버플로와 비슷합니다).

보시다시피, 삽입 된 버튼에 이벤트 핸들러가 있습니다. 막대의 제거를 코딩했지만 용어의 강조 표시를 제거하고 싶습니다. 플러그인에는이 작업을 수행하는 방법이 있습니다 toggleTermHighlighting().

예제 페이지의 익명 함수 내부에서 해당 메소드를 어떻게 호출 할 수 있습니까? 내가 만들어야할까요? this.toggleTermHighlighting = function() {}. 나는 이것의 사례를 첫 번째 인수로 전달하려고 시도했지만 그것을 작동시킬 수 없었습니다.

죄송합니다. 저는 항상 JavaScript의 범위에 힘든 시간을 보내고있는 것 같습니다.

예제 페이지에서 익명 함수 내부에서 해당 메소드에 액세스 할 수 있도록 무엇을 할 수 있는지 아는 사람이 있습니까?

도움이 되었습니까?

해결책

플러그인 내부에서 함수가 정의 된 방식을 재구성하면 훨씬 쉬워 질 것이라고 생각합니다.

라인 128 변경 :

var toggleTermHighlighting = function() {

에게:

this.toggleTermHighlighting = function() {

그런 다음 완전히 다른 범위에서 기능에 액세스하기 위해 이와 같은 작업을 수행 할 수 있습니다.

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

이것은 당신의 질문에 대한 답이 될 것이지만, 다른 접근법이 더 적절하다고 생각합니다. 많은 jQuery UI 코드를 보면 문자열을 플러그인에 전달할 수 있으며 기능이 실행됩니다. 그래서 당신은 실제로 다음과 같은 일을 할 수 있습니다.

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

그런 다음 기능 상단 또는 init () 유형 기능에서 확인하십시오.

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

다른 팁

노출 된 jQuery 함수를 자체적으로 "ToggleterMHighlighting"로 만들거나 기존 방법에 대한 옵션으로 기능을 노출시켜야합니다. 글쎄, 당신이 조금 이상한 일을하고 싶다면, 당신은 영향을받는 객체의 데이터 요소 (jQuery "data"함수 참조)에 함수 (그리고 다른 것을 좋아하는 것)를 넣을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top