Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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
Jquery 获取附加元素的父级_Jquery - Fatal编程技术网

Jquery 获取附加元素的父级

Jquery 获取附加元素的父级,jquery,Jquery,我已使用appendTo()将元素插入到DOM中。我试图从附加的元素内部遍历DOM,以获得对附加元素的元素的引用。但这似乎对我不起作用。通过将parent()的结果输出到控制台,我完成了一些故障排除。每次后退一级,我都会从parent()得到一个结果,直到到达附加元素的父级。此时parent()返回一个空集 下面是说明此问题的代码示例: <div class="menu"> <span class="like current"></span>

我已使用
appendTo()
将元素插入到DOM中。我试图从附加的元素内部遍历DOM,以获得对附加元素的元素的引用。但这似乎对我不起作用。通过将
parent()
的结果输出到控制台,我完成了一些故障排除。每次后退一级,我都会从
parent()
得到一个结果,直到到达附加元素的父级。此时
parent()
返回一个空集

下面是说明此问题的代码示例:

  <div class="menu">
     <span class="like current"></span>
     <span class="done"></span>
     <span class="add"></span>
     <span class="report"></span>
     <div class="panel">
        <div class="panel-content">
           <p>This function is not yet implemented</p>
           <p>
              <a class="cancel" onclick="cancel_panel(this)">Cancel</a>
           </p>
        </div>
     </div>
  </div>
(其中elem是对取消链接的
a
元素的引用)

但它不起作用
$(elem).closest(“div.menu”)
返回一个空集,而不是
div.menu

在进一步的故障排除中,
$(elem).parent()
提供了对
p
标记的预期引用,
$(elem).parent().parent().parent()
提供了对
div.panel
的预期引用。但是
$(elem).parent().parent().parent().parent().parent()
返回一个空集


这是怎么回事?在遍历DOM时,附加元素的响应方式是否与实际元素的响应方式不同?jquery是否会使带有嵌套附件的绘图松动?如何获取返回
div.menu

尝试查找您的“like current”类并在该元素处重命名为“like”

我尝试重现您的脚本问题:

$(function() {

    var elem = $('<a class="cancel">Cancel</a>')
        .click(cancel_panel)
        .appendTo($(".panel-content").children().last());


    function cancel_panel() {                 
        $(elem).closest("div.menu")
        .children("span.current")
        .removeClass("current");
    }     
});
一定要看一看&检查问题是否出在其他地方

$(elem).parents().filter(".menu").children("span.current").removeClass("current");

我做了一个测试,看起来效果很好。

问题解决了。附加元素的jquerydom遍历工作得很好。hungerpain的JSFIDLE演示证明了我在问题中包含的部分代码没有问题。那是另外一回事。重新检查我的代码后,我发现在我试图遍历DOM之前,我已经从DOM中删除了
div.panel
,所以难怪它不起作用

跨度通常不是自动闭合的。你的doctype是什么?在真实的代码中它们不是-这里的代码只是被截断/简化了,因为问题似乎在这里起作用。。。我所做的更改是,我取出了
onclick
,并将其制作成一个
click
事件jQuery@hungerpain:你说得对,它确实管用。在重新命名代码后,我发现了问题-我在删除当前类之前而不是之后从DOM中删除了面板。对不起,这不是我问题的答案
$(elem).closest("div.menu").children("span.current").removeClass("current");
$(elem).parents().filter(".menu").children("span.current").removeClass("current");