2015-05-11 109 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; 
        }