我试图获取最近的锚点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>
答案 0 :(得分:1)
基本上你需要指定你需要找到的元素。最近返回所选元素的第一个祖先。
thisAttr = $(this).closest().attr('class');
在您的情况下,您在没有任何选择器的情况下呼叫最近。这意味着您没有指定要捕获的最接近的元素。您应该传递一个选择器或元素以及最接近的函数。
答案 1 :(得分: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;
}