Javascript 为什么超链接上的单击事件未被触发?

Javascript 为什么超链接上的单击事件未被触发?,javascript,jquery,asp.net-mvc,asp.net-mvc-3,Javascript,Jquery,Asp.net Mvc,Asp.net Mvc 3,为什么超链接上的单击事件未触发 @Html.ActionLink( "Show the privacy policy", "PrivacyPolicy", null, new { id = "privacyLink" }) <div id="privacy"></div> <script> $(document).ready(function () { // $('div').addCla

为什么超链接上的单击事件未触发

@Html.ActionLink(
    "Show the privacy policy", 
    "PrivacyPolicy", 
    null, 
    new { id = "privacyLink" })

<div id="privacy"></div> 

<script> 
    $(document).ready(function () {

        // $('div').addClass('fooh');
        $('div#myDiv').click(function () {
            alert('div was clicked');
        });
        $('a#privacyLink').click(function () {
            alert('a');
        });
    });
</script>

除了您应该在锚点的单击回调中返回false以防止浏览器重定向之外,我看不出有任何问题:

$('a#privacyLink').click(function () {
    alert('a');
    return false;
});
还要确保DOM中没有其他具有
id=“privacyLink”
的元素,因为id必须是唯一的

另外,请在浏览器中检查js控制台,以确保没有一些javascript错误阻止正确连接。单击要正确连接的处理程序。

使用以下方法: 因为你的锚没有形成,你的绑定就不起作用了。使用

这是模拟您的条件(动态生成HTML元素)的JSFIDLE


尝试使用event
preventDefault()
方法

$('a#privacyLink').click(function (e) {
  e.preventDefault();
  alert('a');
  $(location).attr('href', $(this).attr('href'));
});

当你点击链接时会发生什么?有两种可能性会浮现在脑海中:你的DOM中有多个带有
id=“privacyLink”
的元素,或者你有一些javascript错误阻止点击处理程序被附加(查看你的js控制台)。您是否可以通过从浏览器浏览源代码来发布生成的HTML?这可能有助于理解问题,因为我们将有完整的标记来重现问题。发布的html u-如果我忽略了您的AJAX脚本和Modernizer-1.7.min.js-点击效果很好-对我来说也很好。我将html粘贴在主体标记和脚本标记中的javascript之间。当然它不包括那些其他的js文件。既然你的锚没有形成,你所说的
是什么意思?锚就在他的标记中。我不知道ASP。但他似乎是在客户端动态创建的这与他目前拥有的没有什么不同。锚是在服务器端使用Html.ActionLink助手创建的。如果这是一个使用AJAX加载的部分视图中的示例代码,那么您的答案应该是正确的。但是这并不能解释为什么点击div可以工作。如果问题是在绑定时锚点还不存在,那么这仍然没有帮助。它需要类似于
$(document.body)
@Md.ArafatAlMahmud您是否有带有
$('a')的警报。单击(…
  $("a#privacyLink").on("click", function(event){
     alert('a');
  });
  http://jsfiddle.net/nhNpw/6/
$('a#privacyLink').click(function (e) {
  e.preventDefault();
  alert('a');
  $(location).attr('href', $(this).attr('href'));
});