代码之家  ›  专栏  ›  技术社区  ›  Amit

如何在jquery中的当前文档上单击查找定位标记

  •  0
  • Amit  · 技术社区  · 15 年前

    我想在文档级别附加一个单击事件

     $(document).click();
    

    单击元素后,我想知道它是否是锚标记。如果它是一个锚标记,那么我将调用一个方法来做一些事情。怎么能做到?有什么想法吗?

    4 回复  |  直到 14 年前
        1
  •  0
  •   Community CDub    8 年前

    您只需要检查事件对象的目标。

    $(document).click(function(e) {
      var targ;
      if (!e) var e = window.event;
      if (e.target) targ = e.target;
      else if (e.srcElement) targ = e.srcElement;
    
      if ($(targ).is('a')) {
        // do your stuff
      }
    });
    

    (用于从中获取事件目标的跨浏览器代码 quirksmode )

    此外,如果要将其他事件处理程序也附加到链接,请确保使用 event.preventDefault 而不是仅仅返回 false 如果要取消链接的默认操作(请参见 this question )

        2
  •  0
  •   goggin13    15 年前

    只需将这个函数附加到您想要直接调用的所有锚标记上,如何?

    $("a").click(function(){ alert("a link!") })

        3
  •  0
  •   Ben    15 年前
    <a href="#anchor">Anchor</a>
    <a href="link">Anchor</a>
    
    <script type="text/javascript">
        $(document).click(function(event){
            if(event.target.nodeName === 'A'){
                alert('Anchor');
            } else{
                alert('Not an anchor');
            }
        });
    </script>
    
        4
  •  0
  •   Peter Ajtai    14 年前

    @KKYY:如果您试图在该锚的点击事件上提出请求,则在Safari(所有、Windows、iPhone等)中,例如在您的代码中,将无法工作:

    if ($(targ).is('a')) {
        var img = new Image(1,1);
        img.onload = function(){};
        img.src = "http://www.google.com/images/logos/somelogo.png?" + new Date().getTime();
      }
    

    如果你通过任何嗅探器观察流量,你将不会在Safari中看到上面的请求。是的,相当跛脚!