使用jquery查找最后一个子项
我有一张由行组成的桌子。每行都有id、数据父属性和存储在data()中的虚拟级别选项。顶级行既没有父属性,也没有级别属性。我需要找到节点的最后一个子节点,例如:使用jquery查找最后一个子项,jquery,jquery-1.8,Jquery,Jquery 1.8,我有一张由行组成的桌子。每行都有id、数据父属性和存储在data()中的虚拟级别选项。顶级行既没有父属性,也没有级别属性。我需要找到节点的最后一个子节点,例如: <tr id="83" class=""></tr> <tr id="91" class="successor" data-parent="83"></tr> <tr id="93" class="successor" data-parent="91"></tr>
<tr id="83" class=""></tr>
<tr id="91" class="successor" data-parent="83"></tr>
<tr id="93" class="successor" data-parent="91"></tr>
<tr id="92" class="successor" data-parent="91"></tr>
<tr id="94" class="successor" data-parent="92"></tr>
<tr id="133" class="successor" data-parent="83"></tr>
<tr id="134" class="successor rowselected" data-parent="83"></tr>
这看起来像
我需要确定1.1.1.1行是否是1.1的最后一行。怎么做?
尝试使用nextAll或prevAll选择器,并按数据父级和级别对其进行筛选。。。但是没有运气。谢谢。您的示例代码与您对
虚拟级别选项的描述相冲突
如果您确实有虚拟级别选项
,那么这应该是可行的。
如本文所示:我已将TR更改为DIVs,因为它未正确格式化HTML,导致浏览器出现问题
HTML:
这将返回带有级别和元素的deepestEl
对象。在本例中,它将返回{element:div#94.succession,level:3}
您是否尝试过以下方法:
var lastTr = $('#TABLEID tr').last();
这应该可以找到当前表的最后一个
元素(用“TABLEID”标记)
有关
jQuery.last()
look的更多信息,一整天的挣扎让我找到了这个解决方案:
查找与拖动的行位于同一级别的行的顶部节点,并检查该元素是否位于拖动的元素之前
function isLastChild(parent, target, dragged)
{
var top_node = target.prevUntil("tr[data-parent="+parent+"]").andSelf().prev().first();
var child_nodes = top_node.nextUntil("#"+dragged.attr("id")).filter(function(){ return $(this).data("parent") == target.data("parent")});
return (child_nodes.last().attr("id")==target.attr("id"));
}
所有行都在一个表中。嵌套是通过我写的附加属性实现的。啊,对不起,那么您需要找到链接到特定父项的最后一个项吗?i、 e.您需要找到行“91”的所有子元素,这样它将返回93和92。这个假设正确吗?不完全正确,ex的第1.1.1.1行id为94,1.1.1.1的父项是92,它的父项是91。因此,我想知道第1.1.1.1行是否是节点91列表中的最后一行。这是真的,但正如我所说的,这些行没有嵌套在html中,因此选择器$(“.succession”,“#id_row”)给出了空的结果集。
var lastTr = $('#TABLEID tr').last();
function isLastChild(parent, target, dragged)
{
var top_node = target.prevUntil("tr[data-parent="+parent+"]").andSelf().prev().first();
var child_nodes = top_node.nextUntil("#"+dragged.attr("id")).filter(function(){ return $(this).data("parent") == target.data("parent")});
return (child_nodes.last().attr("id")==target.attr("id"));
}