jQuery里面的函数调用另一个函数= undefined?

时间:2014-10-24 22:44:11

标签: javascript jquery function

我想在身体之前调用另一个函数,但是如何?

系统显示错误undefined function myx

我只能在正文后添加代码。

<script type="text/javascript">
jQuery(function($){
    function myx() {
        alert("omg");
    };
});
</script>
</head>

<body>
<script>
jQuery(document).ready(function($){
    $("mytest").click(function(){
        myx();
    });
});
</script>
<a href="#" id="mytest">Check</a>

2 个答案:

答案 0 :(得分:0)

该功能超出范围。您需要在jQuery回调之外定义函数。

<script type="text/javascript">
    function myx() {
        alert("omg");
    };
</script>
</head>

<body>
<script>
jQuery(document).ready(function(){
    $("#mytest").click(function(){
        myx();
    });
});
</script>
<a href="#" id="mytest">Check</a>

答案 1 :(得分:-1)

使用外部JavaScript,因此它已缓存到浏览器内存中,因此当您的客户端再次访问时,它将加载更快。然后看看:

// wrapper is same as $(document).ready() with no-conflict
jQuery(function($){
// should be defined once everything has loaded
function myx(){
  // never use alert except to test
  alert('OMG!');
}
// passing a function name like a var is the same as Anonymous function
$('#mytest').click(myx);
});
// Ignoring outer wrapper to save indenting - indent everything further

重要的是,应该在所有内容都加载后定义myx

您不必这样做,但最佳做法是使用外部JavaScript并将<script>标记放在<head>中,同时将<script type='text/javascript' src='yourUrl.js'></script>设置为符合W3C标准。此外,技术上如果document.body标记在<script>中定义,则某些较旧的浏览器可能无法使用<body>,因为HTML必须在JavaScript能够获取之前定义,这是为什么在jQuery()中使用匿名函数(与$(document).ready()或JavaScript onload Event相同)。然后,您将使用JavaScript获取HTML,因为这些元素可用onload