功能未在页面上加载

时间:2013-01-05 16:05:08

标签: jquery

点击事件时,jquery函数在a标记之前不起作用但在a标记之后工作正常。此外,如果我使用document.ready,那么它的工作原理。我想知道为什么它在标签之前不起作用。

<head>
    <script type="text/javascript">
        function jchand(){
            $('a').click(function(){
                alert('a')
            })
        }
        jchand();
    </script>
</head>
<body>
    <a href="#" >click me</a>
</body>

5 个答案:

答案 0 :(得分:3)

当您尝试绑定.click时,该元素不存在,因为页面尚未完成加载。

  

另一件事如果我正在使用document .ready那么它正在运行

嗯,这正是{/ 1>}

$(document).ready

或者,您可以使用.on()

$(document).ready(function()
{
    $('a').click(function()
    {
        alert('a');
    });
});

它会绑定到整个文档,因此将适用于将来添加的任何元素。

答案 1 :(得分:2)

$('a')查找<a>个元素,但DOM尚未就绪。使用$(document).ready()创建一个在DOM实际就绪时触发的回调函数:

$(document).ready(function() {
    $('a').click(function(){
        alert('a');
    })
})

答案 2 :(得分:1)

最可能的问题是jchand()在<a>元素存在之前执行。试试这个:

<script type="text/javascript">
$(function(){
$('a').click(function(){
alert('a')
})
});
</script>

答案 3 :(得分:0)

因为在DOM中加载脚本之前会调用脚本。此时,它没有看到附加点击元素的任何“a”元素。虽然函数声明没问题,但必须在'a'之后调用。

document.ready函数在加载页面的所有元素后调用脚本,因此会被触发。

答案 4 :(得分:0)

您的脚本在DOM准备好之前执行。如果您在文档就绪($(document).ready(function())$(function()))上调用该函数,它将起作用:

<head>
<script type="text/javascript">
    function jchand(){
        $('a').click(function(){
            alert('a')
        })
    }

    $(function() {
        jchand();
    })
</script>
</head>
<body>
<a href="#" >click me</a>
</body>