相关疑难解决方法(0)

为什么我不能在jQuery的document.ready()中定义函数?

如果我将它们放在document.ready()函数中,函数将显示为undefined:

$(document).ready(function(){
  function foo()
  {
    alert('Bar');
  }
});

foo(); // Undefined
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我确定我只是需要一些简单的理解:)

javascript jquery

62
推荐指数
3
解决办法
5万
查看次数

用于创建新元素的Mutation Observer

我正在尝试在创建特定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钩子触发器吗?但该插件仅检测元素何时被修改,而不是何时创建.

javascript jquery dom4 mutation-observers

32
推荐指数
2
解决办法
2万
查看次数

等待在没有 setTimeout 的情况下定义值?

我正在从某个地方获取一个值并希望在本地使用它(使用 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

javascript async-await ecmascript-6 es6-promise

6
推荐指数
1
解决办法
453
查看次数