Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试返回父对象时,与.parents()和.closest()的行为异常<;ul>;jQuery中的元素id_Javascript_Jquery_Closest_Parents - Fatal编程技术网

Javascript 尝试返回父对象时,与.parents()和.closest()的行为异常<;ul>;jQuery中的元素id

Javascript 尝试返回父对象时,与.parents()和.closest()的行为异常<;ul>;jQuery中的元素id,javascript,jquery,closest,parents,Javascript,Jquery,Closest,Parents,所以我有2个容器,每个容器都有id。其中有一个元素列表 第一个是。第二个是 每个中都有一个id为close的标记(这是我用作选择器的链接),单击后将删除每个节点。我试图将每个容器作为目标,以查看其来源 我的HTML是: <!-- coaches box --> <div class="box"> <div class="heading">

所以我有2个容器,每个容器都有id。其中有一个
  • 元素列表

    第一个
    。第二个是

    每个
  • 中都有一个id为close的标记(这是我用作选择器的链接),单击后将删除每个
  • 节点。我试图将每个
    容器作为目标,以查看其来源

    我的HTML是:

                    <!-- coaches box -->
                    <div class="box">
                        <div class="heading">
                            <h3 id="coaches-heading">Coaches</h3>
                            <a id="coaches" class="filter-align-right">clear all</a>
                        </div>
                        <ul id="coaches-list" class="list">
                            <li><span>Hue Jackson<a class="close"></a></span></li>
                            <li class="red"><span>Steve Mariuchi<a class="close"></a>                     </span></li>
                        </ul>
                    </div>
    
                    <!-- players box -->
                    <div class="box">
                        <div class="heading">
                            <h3 id="players-heading">Players</h3>
                            <a id="players" class="filter-align-right">clear all</a>
                        </div>
                        <ul id="players-list" class="list">
                            <li><span>Steve Young<a class="close"></a></span></li>
                            <li><span>Gary Plummer<a class="close"></a></span></li>
                            <li><span>Jerry Rice<a class="close"></a></span></li>
                        </ul>
                    </div>
    
    每当我单击每个特定标记时,它都会删除我单击的正确标记,尽管当我发出$currentId警报时,如果我有:

                var $currentId = $(".close").closest("ul").attr("id");
    
    当我在
        如果我将其更改为:

                    var $currentId = $(".close").parents("ul").attr("id");
        
        它的行为与上述相同,但会提醒“玩家列表”

        因此,当使用closest()时,它返回第一个
        id,但当使用parents()时,它返回最后一个
        id


        有人知道这种古怪的行为是怎么回事吗?

        这是意料之中的行为

        你应使用:

        var $currentId = $(this).closest("ul").attr("id");
        
        $(此)
        指向单击的
        。关闭


        $(“.close”)
        指向找到的第一个。这是预期的行为

        你应使用:

        var $currentId = $(this).closest("ul").attr("id");
        
        $(此)
        指向单击的
        。关闭


        $(“.close”)
        指向找到的第一个选择器。

        这是因为您从单击处理程序运行该选择器,所以应该使用以下选项:

        var $currentId = $(this).closest("ul").attr("id");
        

        这是因为您从单击处理程序运行该选择器,因此您应该使用以下选项:

        var $currentId = $(this).closest("ul").attr("id");
        

        尝试使用此函数获取父级:

        var $currentId = $(this).parents().first();
        
        我从未使用过.closest()函数,但根据jQuery,您指定的应该可以工作。不管怎样,试试看,告诉我进展如何


        您还需要使其通过使用$(this)选择当前元素。

        尝试使用此函数获取父元素:

        var $currentId = $(this).parents().first();
        
        我从未使用过.closest()函数,但根据jQuery,您指定的应该可以工作。不管怎样,试试看,告诉我进展如何


        您还需要使它通过使用$(this)

        Ugh选择当前元素。真不敢相信我之前没看到。非常感谢!啊。真不敢相信我之前没看到。非常感谢!非常感谢。同样有效,希望我能接受这两个答案。向上投票。:)非常感谢。同样有效,希望我能接受这两个答案。向上投票。:)