为什么这不起作用?它甚至没有调用onClick

时间:2010-02-17 05:14:26

标签: javascript jquery debugging

<script type="text/javascript">
$("a.filef").click(function(e){
    alert('hi, it works');
    return false;
});

</script>


<a class="filef" href="" rel="1">A</a>
<a class="filef" href="" rel="2">V</a>

3 个答案:

答案 0 :(得分:3)

您需要确保首先存在元素。试试这个:

$(function(){
  $("a.filef").click(function(e){
    e.preventDefault();
    alert("Hi, it works.");
  });
});

将您的代码放在:

$(function(){
  /* here */
});

使它等到DOM加载完成后再运行。在您的情况下,它会在尝试将逻辑绑定到它们之前等待链接存在。

在某些情况下,您需要在对象存在之前运行代码。许多支持Ajax的网站就是这种情况。在这些情况下,jQuery具有$.live()方法,其外观相似:

$(function(){
  $("a.filef").live("click", function(e){
    e.preventDefault();
    alert("Hi, it works.");
  });
});

使用它,如果元素已经存在,或者将来某个时间出现,则无关紧要。除非您正在使用ajax或后期创建的元素,否则我建议坚持使用第一个解决方案。

答案 1 :(得分:0)

您的相同代码对我有用,请查看:

http://jsbin.com/axivo3

将您的js代码放在页面底部或使用jquery的ready事件,该事件在DOM可用后触发。

答案 2 :(得分:0)

将脚本包装在一个函数中并将其作为参数传递给$(document).ready(function),或者你可以将内容写成匿名函数。

<script type="text/javascript">
$(document).ready(function(){
 $("a.filef").click(function(e){
    alert('hi, it works');
    return false;
 });
});
</script>