如果我将它们放在document.ready()函数中,函数将显示为undefined:
$(document).ready(function(){
function foo()
{
alert('Bar');
}
});
foo(); // Undefined
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我确定我只是需要一些简单的理解:)
我正在尝试在创建特定div时使函数关闭.用最简单的术语来说,我有这样的事情:
<a href="" id="foo">Click me!</a>
<script>
$("#foo").live("click",function(e) {
e.preventDefault();
$(this).append($("<div />").html("new div").attr("id","bar"));
});
</script>
Run Code Online (Sandbox Code Playgroud)
以前,我有突变事件听取div#bar的创建 - 这样的事情:
$("#bar").live("DOMNodeInserted", function(event) {
console.log("a new div has been appended to the page");
});
Run Code Online (Sandbox Code Playgroud)
是否有使用Mutation Observers的等价物?我尝试了attrchange.js功能你可以在DOM元素的样式对象更改后有一个javascript钩子触发器吗?但该插件仅检测元素何时被修改,而不是何时创建.
我正在从某个地方获取一个值并希望在本地使用它(使用 lodash):
const setting = _.get(this.settings, 'options');
Run Code Online (Sandbox Code Playgroud)
this.settings.options设置在其他地方,取决于环境,this.settings.options可能未定义。在这种情况下,我可以执行以下操作:
const set = (setting) => {
...
...
};
const getThing = () => {
setTimeout(() => {
const setting = _.get(this.settings, 'options');
return setting ? set(setting) : getThing();
}, 1000);
};
getThing();
Run Code Online (Sandbox Code Playgroud)
这使用一个setTimeout函数来等待 1 秒this.settings.options以在该时间内设置,如果尚未设置,则该setTimeout函数会在 1 秒后调用自身进行检查。之后,它继续set()使用获取的数据执行该功能。这似乎每次都有效,但如果我能一直检查这个值直到它在没有计时器的情况下被定义,那就太好了。我不确定这是否可能?
我一直在尝试实现 promise 或使用 async / await 来执行此操作,但是我看到的示例似乎也使用了setTimeouts,并且解决方案最终看起来更复杂。其中,我主要是在看这个答案。无论如何,我在使用 async/await 执行此操作时遇到了麻烦,因此必须继续进行故障排除。
有没有办法在不使用 asetTimeout或 的情况下等待定义此值setInterval?