2012-01-30 2 views
0

많은 요소를 돌면서 JavaScript의 간단한 스 니펫을 실행할 링크를 추가하려고합니다. Chrome 확장 프로그램에서 콘텐츠 스크립트가 실행됩니다. 함수 do_somethingmy_func과 동일한 파일에 정의되어 있으며 Chrome 확장 프로그램의 일부입니다. 동적으로 추가 된 요소의 onclick 처리기에서 JavaScript 함수를 참조하십시오.

my_func

은 다음과 같습니다

Uncaught ReferenceError: do_something is not defined

가 어떻게 my_func에서 do_something를 참조 할 수 있습니다 : 내 반짝 링크를 클릭 할 때

function my_func() { 
    $(".matching_class").each(function() { 
     $(this).html('<a href="javascript:do_something();">foo</a>'); 
    }); 
} 

문제는, 난이 얻을?

+0

당신이 브래킷을 열고 놓친? '$ (this) .html ('foo');' – Ved

+0

@ programmer_1 - 좋은 점, 예 - 내 실제 코드에는 없지만 게시 한 단축 예가 있습니다! –

답변

1

javascript에 대한 호출을 삽입하는 대신 하이퍼 링크의 click 이벤트에 함수를 바인딩하는 것이 좋습니다. my_func(); (테스트되지 않은)이 라인을 따라

뭔가 :

$(".matching_class").each(function() { 
    $this.bind('click', do_something); 
}); 

또는 익명 함수와

:

$(".matching_class").each(function() { 
    $this.bind('click', function() { 
     //do_somethintg code 
    }); 
}); 
+0

익명의 함수 접근법은 저에게 효과적입니다 - 내부에서'do_something '을 호출 할 수도 있습니다. 감사! –

+0

문제 없으므로 도움이 되니 기쁩니다. – dougajmcdonald

0

my_func 앞에 do_something 기능을 추가하십시오.

do_something을 호출 할 때 my_func가 정의 된대로 my_func를 찾지 못할 수 있기 때문일 수 있습니다.

마찬가지로 JavaScript 엔진은 JavaScript 소스 코드를 해석하고 이에 따라 스크립트를 실행하는 인터프리터입니다.

+0

답변을 주셔서 감사합니다.하지만 슬프게도 이미 완료했습니다. –

관련 문제