jquery分开包装元素的onclick事件

我有一个div内的锚链接。 我希望锚链接和div分别处理onclick事件,但现在单击锚链接也会触发div的onclick事件。 我如何防止这种情况?

代码如下:

<html>
     <head>
     <style>
     #box {
          background-color: #ccffcc;
          width: 400px;
          height: 200px;
     }
     </style>
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js">
     </script>
     <script type="text/javascript">
          $(document).ready(function() {
               $("#mailto").click(function(event) {
                    // correctly opens an email client if clicked
                    $("a[@href^='http']").attr('target','_blank');
                    return( false );
               });

               $("#box").click(function() {
                    // always goes to the home page, even if the #mailto id is clicked
                    window.location = '/index.php';
               });
          });
     </script>
     </head>
     <body>
     <div id="box">
          <a  href="mailto:someone@psomewhere.com" id="mailto">someone@psomewhere.com
    </div>
     </body>
</html>

有没有办法让我在加载mailto后停止执行代码?

谢谢!

约翰


您需要确保您的html有效,因此请关闭标签:

<a href="mailto:someone@psomewhere.com" id="mailto">someone@psomewhere.com<a/>

如果这仍然会导致问题,请尝试此操作。

$("#mailto").click(function(event)
{
    event.stopPropagation();
    if(event.srcElement == 'HTMLAnchorElement')
    { 
        //Process
    }
});

这可能是由于你的主播没有正确关闭。 或者它肯定不会有帮助


该事件冒泡了DOM树e.stopPropagation(); 将停止。

$("#mailto").click(function(event) {
    event.stopPropagation();
    // correctly opens an email client if clicked
    $("a[@href^='http']").attr('target', '_blank');
    return (false);
});

$("#box").click(function() {
    // always goes to the home page, even if the #mailto id is clicked
    window.location = '/index.php';
});​

小提琴 http://jsfiddle.net/uwJXK/
关于stopPropagation() http://api.jquery.com/event.stopPropagation/

链接地址: http://www.djcxy.com/p/71563.html

上一篇: jquery separate the onclick events of wrapped elements

下一篇: Why Hibernate Envers not firing up on update?