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'));
});