如何调用$(document).ready中的函数

问题描述 投票:0回答:5

我正在尝试调试使用

jQuery.

的网络应用程序

在 firebug 中,我调用 $(document).ready.. 内的函数

 function val() { console.log('validated outside doc.ready'); }
 $(document).ready(function()
 {

    console.log('document ready...');

    function validate() { console.log('validated!'); }
 }

在 firebug 控制台中,我输入

validate()
,它说它不是一个函数

如果我输入

val()
,它就可以正常工作。

如何从控制台调用验证?

jquery debugging firebug
5个回答
78
投票

您不是在调用这样的函数,您只是定义该函数。

正确的做法是在

document.ready
外面定义函数,在里面调用:

// We define the function
function validate(){
  console.log('validated!');
}

$(document).ready(function(){
  // we call the function
  validate();
});

另一种选择是自行调用这样的函数:

$(document).ready(function(){
   // we define and invoke a function
   (function(){
     console.log('validated!');
   })();
});

13
投票

您的

validate
函数是您传递给 jQuery
ready
处理程序的函数的本地函数。

如果你这样做:

window.validate = function(){ /*....*/ };

您将能够从控制台访问。但污染全局作用域并不是一个好的做法,除非只是为了调试。


2
投票

那么,您有什么理由需要在文档中准备好该功能吗? 只有在这些括号(范围)内该函数才会存在。只需将其移出,或者仅将其全部移入 document.ready


0
投票

您的代码中有 2 个错误。

  1. 格式化为右括号
  2. 您没有调用该函数。需要调用该函数才能打印它。
<script>
  function val() { console.log('validated outside doc.ready'); }
  $(document).ready(function() {
    console.log('document ready...');
    validate();
    function validate() { val();  console.log('validated!'); }
  });
</script>

0
投票

解决方案是:

var validate;    

$(文档).ready(函数() {

console.log('document ready...');

validate = function() { console.log('validated!'); }
validate();

}

© www.soinside.com 2019 - 2024. All rights reserved.