jquery разделяет события onclick обернутых элементов - PullRequest
0 голосов
/ 11 сентября 2010

У меня есть якорная ссылка внутри div.Мне бы хотелось, чтобы и ссылка привязки, и div обрабатывали события onclick отдельно, но сейчас щелчок ссылки привязки также вызывает событие onclick для div.Как мне предотвратить это?

Вот код:

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

Спасибо!

Джон

Ответы [ 3 ]

0 голосов
/ 11 сентября 2010

Это может быть связано с тем, что ваш якорь не был закрыт должным образом. Или это точно не поможет

0 голосов
/ 11 сентября 2010

вам нужно убедиться, что ваш html действителен, поэтому завершите тег:

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

и если это все еще вызывает проблемы, попробуйте это.

$("#mailto").click(function(event)
{
    event.stopPropagation();
    if(event.srcElement == 'HTMLAnchorElement')
    { 
        //Process
    }
});
0 голосов
/ 11 сентября 2010

Событие поднимается вверх по дереву 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';
});​

Fiddle http://jsfiddle.net/uwJXK/
О stopPropagation () http://api.jquery.com/event.stopPropagation/

...