2013-03-03 76 views
1

为什么超级链接上的点击事件未被触发?为什么超链接上的点击事件没有被触发?

@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> 

myDiv click事件如预期被激发,但没有打响privacyLink的事件,这是不显示的警告。

生成的HTML:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title>Home Page</title> 
    <link href="/Content/Site.css" rel="stylesheet" type="text/css" /> 
    <script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script> 
    <script src="/Scripts/modernizr-1.7.min.js" type="text/javascript"></script> 
    <script src="/Scripts/AjaxDemo.js" type="text/javascript"></script> 
</head> 
<body> 
    <div class="page"> 
     <header> 
      <div id="title"> 
       <h1>My MVC Application</h1> 
      </div> 
      <div id="logindisplay"> 
        [ <a href="/Account/LogOn">Log On</a> ] 

      </div> 
      <nav> 
       <ul id="menu"> 
        <li><a href="/">Home</a></li> 
        <li><a href="/Home/About">About</a></li> 
       </ul> 
      </nav> 
     </header> 
     <section id="main"> 
      <h2>Welcome to ASP.NET MVC!</h2> 
<p> 
    To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>. 
</p> 
<div id="myDiv"> 
<p> 
Me Gusta 
</p> 
</div> 




<a href="/Home/PrivacyPolicy" id="privacyLink">Show the privacy policy</a> 


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



<script> 

    $(document).ready(function() { 

     // $('div').addClass('fooh'); 
     $('div#myDiv').click(function() { 

      alert('div was clicked'); 
     }); 

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

    }); 



</script> 
     </section> 
     <footer> 
     </footer> 
    </div> 
</body> 
</html> 
+1

当您点击链接时会发生什么? – 2013-03-03 17:38:02

+0

只是重定向到指定的动作 – 2013-03-03 17:41:23

+1

有几种可能性浮现在脑海中:DOM中有多个元素与id =“privacyLink”',或者您有一些JavaScript错误,无法连接点击处理程序(看看你的js控制台)。 – 2013-03-03 17:42:47

回答

3

除了事实,你应该从你的锚的点击回调返回false,以防止浏览器重定向离开我看不出什么错:

$('a#privacyLink').click(function() { 
    alert('a'); 
    return false; 
}); 

此外,请确保您的DOM中没有其他任何位置的元素,因为ID必须是唯一的。

同时检查您的JS控制台在浏览器中,以确保你没有一些JavaScript错误,防止被正确安装的。点击处理程序。

0

使用此: 由于没有形成你的锚,你的绑定是行不通的。使用http://api.jquery.com/on/

$("a#privacyLink").on("click", function(event){ 
    alert('a'); 
    }); 

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

http://jsfiddle.net/nhNpw/6/ 
+0

你所说的'因为你的锚不formed'意思?主播就在他的标记中。 – 2013-03-03 17:46:15

+0

我不知道ASP。但似乎他正在客户端动态创建它 – user1428716 2013-03-03 17:47:17

+1

这与他目前的产品没有什么不同。 – 2013-03-03 17:47:59

0

与事件preventDefault()方法尝试的jsfiddle。

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

仍然无法正常工作 – 2013-03-03 17:46:45

+0

@ Md.ArafatAlMahmud您是否有'$('a')的提醒。click(...'? – 2013-03-03 18:05:20