2015-05-11 67 views
1

我想获得最近的锚点className,但是,不是每个链接都会包含一个类,因此父类将是亚军。在许多情况下,className将会有所不同,所以不希望硬编码类名称。获得最近的className

我只是试图通过类名来确定重复链接的位置,以查看哪个更好。

$("a").click(function() { 
    if ($("a[href='" + $(this).attr("href") + "']").length > 1) { 
     thisAttr = $(this).closest().attr('class'); 
     alert('\nClass = ' + thisAttr + ' \n\nYes, this is duplicate link\n\n'); 
     return false; 
    } else { 
     alert('\nNo, this is NOT a duplicate link\n\n'); 
     return false; 
    } 
}); 


<div id="navigation"> 
    <div class="utility"> 
     <div><a href="http://www.google.com">Google</a> (Google is not a dup)</div> 
     <BR> 
     <div class="test"><a href="http://www.example.com">Example</a> (Example is a duplicate)</div> 
     <BR> 
     <div><a href="http://www.amazon.com">Amazon</a> (Amazon is a dup)</div> 
     <BR> 
     <div><a href="http://www.amazon.com">Amazon</a> (Amazon is a dup)</div> 
     <BR> 
     <div class="hello"><a href="http://www.intranet.com">Intranet</a> (Intranet is not dup)</div> 
     <BR> 
     <div class="world"><a href="http://www.example.com">Example</a> (Example is a dup)</div> 
     <BR> 
     <div><a href="http://www.example.com">Example</a> (Example is a dup)</div> 
     <BR> 
    </div> 
</div> 
</div> 

http://jsfiddle.net/no4gkk0n/12/

+1

什么是DOM元素的类名都用它做是否是重复的链接或不?在你的例子中,你显示的重复的Amazon链接甚至没有类名。 –

+0

_“看哪一个表现更好。”_? _“表现更好”的标准是什么?预期的结果是什么? – guest271314

+0

对于谷歌链接,它将是“实用程序”,那么对于第一个示例链接,它将是“测试”,然后亚马逊将是“实用程序”。无论如何,这是主意。 – Evan

回答

1

基本上你需要指定你需要找到的元素。最近返回选定元素的第一个祖先。

thisAttr = $(this).closest().attr('class'); 

在你的情况下,你打电话最接近没有任何选择器。这意味着你没有指定你试图捕捉哪个最接近的元素。您应该传递一个选择器或元素以及最接近的函数。

0

下面的代码会给关闭DIV类名这是同当前锚:

$("a").click(function() { 
        if ($("a[href='" + $(this).attr("href") + "']").length > 1) { 
         var $parentDiv = $(this).parent(); 
         var value = $(this).attr("href"); 
         var $element = $parentDiv.siblings('[class]'); 
         if ($element !== null || $element !== undefined) 
         { 
          var alertClasses; 
          for (var i = 0; i < $element.length; i++) { 
           var $tempele = $element.eq(i); 
           if ($tempele.children('a').prop('href') == value) 
           { 
            alertClasses = $tempele.prop('class'); 

           } 
           else if ($tempele.children('a').prop('href') == value + '/') { 
             alertClasses = $tempele.prop('class'); 

            } 

          } 
          alert('\nClass = ' + alertClasses + ' \n\nYes, this is duplicate link\n\n'); 
         } 
        return false; 
        } else { 
         alert('\nNo, this is NOT a duplicate link\n\n'); 
         return false; 
        }