在动态添加元素的onclick处理程序中引用JavaScript函数

时间:2012-01-30 08:59:58

标签: javascript google-chrome-extension

我正在浏览一堆元素,并希望添加一个链接,该链接将运行一小段JavaScript。我这样做是Chrome扩展程序中的内容脚本。功能do_somethingmy_func在同一文件中定义,并且是Chrome扩展程序的一部分。

my_func看起来像这样:

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

问题是,当我点击闪亮的链接时,我明白了:

  

未捕获的ReferenceError:do_something未定义

如何从do_something引用my_func

2 个答案:

答案 0 :(得分:1)

将函数绑定到超链接的click事件而不是注入对javascript的调用可能是更好的做法:my_func();

这些方面的东西(未经测试):

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

或使用匿名函数:

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

答案 1 :(得分:0)

尝试在do_something之前放置my_func

可能是因为你调用do_something时可能找不到my_func,因为它是在my_func之后定义的。

作为 JavaScript引擎是解释器,它解释JavaScript源代码并相应地执行脚本。