无法在同一事件中调用$(window).load中定义的函数

时间:2017-10-04 06:19:53

标签: jquery

所以,我认为吊装可以解决这个问题。我已经定义了一个函数,我试图在它定义的同一个事件中调用它。具体来说,一些示例代码不起作用:

$(window).load(function() {

  doSomething()

  var doSomething = function(){
    alert('working')
  }

})

它让我循环,因为我通过我的代码调用函数,但我只是意识到它们都是从事件处理程序调用的;没有一个是内联运行的,除了我决定应该立即运行的那个。

我想我的问题是,为什么不提升这个功能所以我可以在定义它的同一范围内调用它?

2 个答案:

答案 0 :(得分:0)

函数定义提升仅针对函数声明,而不是函数表达式

当DOM准备好进行交互时,您需要更改(窗口).ready,因为就绪已被触发。

希望这有帮助。



<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(window).ready(function(){

  doSomething()

  function doSomething(){
    alert('working')
  }

})
</script>
</head>
<body>

</body>
</html>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

变化

  

$(window).load(function() {

  

$(window).on('load',function() {

因为$(window).load(...已被弃用

然后,首先尝试声明var doSomething = function(){ ...,然后在该行之后放置doSomething()

更正后的代码:

$(window).on('load',function() {

  var doSomething = function(){
    alert('working');
  }
  doSomething();

});