【发布时间】:2015-05-15 02:53:46
【问题描述】:
我有一个 IIFE,我正在尝试将其制作成一个小书签。我想让小书签弹出的模式有一些按钮可以调用一个函数。但是,当我有这样的结构时:
(function(){
var __myFn = function(str){ //also have tried function __myFn(){..}
alert(str);
}
//some AJAX that builds HTML with the `result`s
document.getElementById("resultDiv").innerHTML = "<span onclick='__myFn(" + result.someData+ ")'>test</span>
}());
我收到Uncaught ReferenceError: __myFn is not defined
我怎样才能让这个功能被识别?还有其他方法吗?
【问题讨论】:
-
span元素在全局范围内,__myFn()在 IIFE 范围内。您可以使用适当的 DOM 操作方法和addEventListener来附加事件。 -
是的,但我不确定如何在没有库的情况下进行事件委托,我想我会这样做,因为这些跨度在加载时不在页面上。我认为可能有更简单的方法。
-
委托?你可以做到on a newly-created element。如果您从 AJAX 获取数据,则必须在回调函数中执行此操作。
-
@Teemu 非常好。谢谢你的想法!
标签: javascript ajax closures iife