如果jQuery脚本块位于页面中的html标记之前,jQuery是否可以将事件绑定到元素?
例如,这不起作用:
<script>
$('a').bind('click', function() {
alert($(this).attr("innerHTML"));
</script>
<a href="#Hello">Greetings</a>
是的,我可以把脚本放在元素之后,但是,嘿,也许我不想。只是好奇这是否是唯一的方法。
答案 0 :(得分:5)
是的,如果您将代码放在ready
[docs]事件处理程序中(并修复语法错误;)):
$(function() {
$('a').bind('click', function() {
alert(this.innerHTML);
// jQuery way would be: $(this).html()
});
});
答案 1 :(得分:1)
使用jQuery ready函数:http://api.jquery.com/ready/
<script>
$(document).ready(function() {
$('a').bind('click', function() {
alert($(this).attr("innerHTML"));
}
</script>
<a href="#Hello">Greetings</a>
请注意,您只需执行$(this).attr("innerHTML")
$(this).html()
答案 2 :(得分:1)
另一种方法是在$(window).load()
事件
$(window).load(function() {
$('a').bind('click', function() {
alert($(this).attr("innerHTML"));
});
现在,所有文档完全加载后,bind
将会出现。
答案 3 :(得分:0)
是的,但是将代码包装在$(function(){...})中,告诉jquery在Dom完全加载后执行它,此时所有元素都可用。