代码未运行.click超链接

时间:2010-04-15 14:14:02

标签: jquery

当我有这个时,代码没有在.click上运行:

$(".cancel").click(function() {
    alert("got here");
    $(this).closest(":dialog").dialog("close");                            
});

<a class="cancel" href=""><img src="images/cancelButton.gif" border="0" /></a>

它必须是愚蠢的东西,但我看不到它。

5 个答案:

答案 0 :(得分:7)

我会假设您将代码包装在$(document).ready( function () { ... });

$(document).ready( function () {
  $('.cancel').click( function(e) {
     alert('here!');
     e.preventDefault(); // prevents click from following through
  });
});

答案 1 :(得分:1)

在点击事件结束时添加return false:

$(".cancel").click(function() {
    alert("got here");
    $(this).closest(":dialog").dialog("close");
    return false;                            
});

答案 2 :(得分:0)

如果href=""代替href="#"并不意味着它实际上会在点击时重新加载页面?

答案 3 :(得分:0)

你通过javascript调用放置onclick事件的任何地方,如果你添加return false,那么默认行为(没有onclick事件会发生什么)将被忽略。

所以在这种情况下,return return false会阻止浏览器跳转到链接锚点。

修改

下面的公平评论 - 看了jquery.com,它说

从处理程序返回false等同于在事件对象上调用.preventDefault()和.stopPropagation()。

答案 4 :(得分:0)

有几个人说加回假;到你的点击处理程序。您应该在事件类上使用preventDefault方法,如下所示:

$(".cancel").click(function(event) {
  event.preventDefault();
  alert("got here");
  $(this).closest(":dialog").dialog("close");
});

确保将事件传递给处理函数。这是首选的jQuery方式。我也总是将preventDefault()作为处理程序方法中的第一件事,但我认为这不会产生影响。