jQuery检查目标是否为链接

jQuery check if target is link

本文关键字:链接 是否 目标 检查 jQuery      更新时间:2023-09-26

我有一个全局函数来捕获点击。

$(document).click(function(e){
  //do something
  if(clickedOnLink)
    //do something
});

我想做额外的东西,当目标是一个链接,但如果<a>标签实际上包围了一个div (HTML5允许)的目标将是那个div。

http://jsfiddle.net/Af37v/

你可以试着看看你点击的元素是否是<a>标签的子元素。

$(document).click(function(e){
    if($(e.target).closest('a').length){
        alert('You clicked a link');
    }
    else{
        alert('You did not click a link');
    }
});

我相信使用is实际上会比使用closest的答案有更好的性能:

$(e.target).is('a, a *');

检查元素本身是否为a,或者它是否包含在a中。

这应该比closest快,因为它将在元素本身上使用匹配,而不需要像closest那样遍历DOM树。

试试这个

$(document).click(function(e){
  //do something
  if($(this).closest('a').length)
    //do something
});

如果确切的目标是link,那么您可以使用.is()

的例子:

$(".element").on("click", function(e){
  if($(e.target).is("a")){
    //do your stuff
  }
});
编辑:

如果它被锚标记内的其他元素包围,那么您可以使用closest()并使用length检查它是否有锚标记父或不

的例子:

$(".element").on("click", function(e){
  if($(e.target).closest("a").length){
    //do your stuff
  }
});

使用jquery获取tagName属性$("a").prop("tagName");

更新:您可以检查目标是否为a,或者父对象是否为a。

$(function () {
    $(document).on('click', function (e) {
        $target = $(e.target);
        if ($target.closest('a').length > 0) {
            alert('i am an a');
        }
    });
});
http://jsfiddle.net/8jeGV/4/

您可以通过测试.children() <div>是否有任何内容来测试<a>下是否有<div>。如果里面没有任何内容,或者没有<div>,则if语句将返回false

我建议这样写:

$(document).click(function(e){
    var willRedirect = ($('a[href="/"]').attr('href').indexOf('#') == -1 ? true : false),
    //run code
    if ( willRedirect === false ){
        e.preventDefault();
        //the link will not redirect
        if ( $(this).children('div').html() ){
            //there is a <div> inside <a> containing something
        }
        else {
            //there is no <div> inside <a>
        }
    }
    else {
        //the link is not pointing to your site
    }
});