2012-01-30 66 views
0

我正在旋轉一堆元素,並且希望添加一個鏈接,該鏈接將運行JavaScript的一小段代碼。我正在做這個Chrome擴展中的內容腳本。功能do_something在與my_func相同的文件中定義,並且是Chrome擴展的一部分。在動態添加的元素的onclick處理函數中引用JavaScript函數

my_func看起來是這樣的:

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

問題是,當我點擊我的發亮的,我得到這個:

Uncaught ReferenceError: do_something is not defined

如何可以引用do_somethingmy_func

+0

你有沒有錯過打開支架? '$(this).html('foo');' – Ved 2012-01-30 09:06:38

+0

@ programmer_1 - 不錯的地方,是的 - 我有,但沒有在我的實際代碼中,只是我張貼的簡短示例! – 2012-01-30 09:08:11

回答

1

將您的函數綁定到超鏈接的單擊事件而不是向javascript注入一個調用可能是更好的做法: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',這似乎工作。謝謝! – 2012-01-30 09:22:25

+0

沒問題,很高興幫助 – dougajmcdonald 2012-01-30 09:35:08

0

嘗試在my_func之前放置do_something函數。

這可能是因爲當您調用do_something時,它可能找不到my_func,因爲它是在my_func之後定義的。

作爲A JavaScript引擎是翻譯器,它解釋JavaScript源代碼並相應地執行腳本。

+0

感謝您的回答,但不幸的是,我已經做到了。 – 2012-01-30 09:05:08

相關問題