1

带有 jquery 功能的 Click 事件在 a 标签之前不起作用,但在 a 标签之后工作正常。另外,如果我使用document.ready它,它会起作用。我想知道为什么它在 a 标签之前不起作用。

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

5 回答 5

3

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

另一件事如果我正在使用文档 .ready 那么它正在工作

好吧这正是$(document).ready

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

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

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

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

于 2013-01-05T16:07:25.597 回答
2

$('a')寻找<a>元素,但 DOM 还没有准备好。用于$(document).ready()创建在 DOM 实际准备好时触发的回调函数:

$(document).ready(function() {
    $('a').click(function(){
        alert('a');
    })
})
于 2013-01-05T16:07:12.567 回答
1

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

<script type="text/javascript">
$(function(){
$('a').click(function(){
alert('a')
})
});
</script>
于 2013-01-05T16:10:16.197 回答
0

因为在 DOM 中加载 a 之前调用了脚本。那时,它看不到任何附加点击元素的“a”元素。虽然函数声明是可以的,但它必须在'a'之后调用。

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

于 2013-01-05T16:06:52.967 回答
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>
于 2013-01-05T16:07:16.423 回答