如果我拖放子节点,如何获取父节点的文本?

时间:2014-08-23 12:32:22

标签: javascript jquery

我正在使用树,树的结构如附图所示。

Doubt

我正在尝试做的就是拖拉子画面中的子元素。 我想得到父李的文字,如图所示,但我没有得到它。

现在我正在尝试这种方式,下面是我的代码:

libName=$(ui.draggable).prevAll("li.lib:first").text();

其中lib是父li的类名,但我没有得到任何文本。所以如何得到它。

1 个答案:

答案 0 :(得分:2)

parents结合first将帮助您找到父li

libName=$(ui.draggable).parents("li").first().text();

或者,closest可能会更有效率(因为它不必访问所有祖先;不是它可能很重要),但你必须首先使用parent因为被拖动的项目否则将匹配:

libName=$(ui.draggable).parent().closest("li").text();

请注意,我们可以对first的结果使用parents,因为该集合是根据最靠近元素的父级(然后是下一个祖先等)排序的。


您在下面发表了评论:

  

但它也列出了我的父母和兄弟李......但我只需要父母李

如果您的意思是希望父项没有的文本包含它所包含的列表的文本(即只有直接包含的文本),您可以使用contents代替text(也可能使用$.trim,删除前导和尾随空格):

libName=$.trim($(ui.draggable).parent().closest("li").contents().map(function() {
    return this.nodeType === 3 ? this.nodeValue : ""; // 3 == text node
}).get().join(""));