获取最接近的className

时间:2015-05-11 18:16:58

标签: jquery html

我试图获取最近的锚点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/

2 个答案:

答案 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;
                    }