点击事件时,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>
答案 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>