用jquery查找最后一个孩子
我有一张由多行组成的表格。每行都有id,data-parent属性和存储在data()中的虚拟级别选项。*行不具有父级或级别属性。我需要找到一个节点的最后一个孩子,像前:用jquery查找最后一个孩子
<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选择器,并通过数据父级和级别过滤...但没有运气。谢谢。
苦苦挣扎的整整一天让我想到了这个解决方案: 找到与dr博士同级的*节点混合行并检查元素是否在拖动元素前最后一次。
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"));
}
如果您确实有virtual level option
,那么您的示例代码与您对virtual level option
的描述相冲突,那么这应该起作用。 如此处所示:http://jsfiddle.net/dBT3D/我已将TR更改为DIV,因为它在浏览器中造成问题,原因是HTML格式不正确。
HTML:
<div id="83" class="">
<div id="91" class="successor" data-parent="83" data-level="1">
<div id="93" class="successor" data-parent="91" data-level="2"></div>
<div id="92" class="successor" data-parent="91" data-level="2">
<div id="94" class="successor" data-parent="92" data-level="3"></div>
</div>
</div>
<div id="133" class="successor" data-parent="83" data-level="1"></div>
<div id="134" class="successor rowselected" data-parent="83" data-level="1"></div>
</div>
JS:
$(document).ready(function() {
deepestEl = {
element: null,
level: 0
};
$('.successor', '#83').each(function (index, el) {
console.log(el);
if ($(el).data('level') >= deepestEl.level) {
deepestEl.element = el;
deepestEl.level = $(el).data('level');
}
});
console.log(deepestEl);
});
这将水平和元素返回deepestEl
对象。在这个例子中,它将返回{element: div#94.successor, level: 3}
你有没有试过如下:
var lastTr = $('#TABLEID tr').last();
这应该找到当前表的最后<TR>
元素
欲了解更多信息的(与“TABLEID”标记) jQuery.last()
看起来here
所有行都在1个表中。嵌套是通过我写的附加属性的帮助来实现的。 –
对不起,所以你需要找到链接到特定父项目的最后一个项目?即你需要找到'91'行的所有子元素,所以它会返回93和92.这个假设是否正确? – Nunners
不完全是,ex的行1.1.1.1有id 94,1.1.1.1的父级是92,它的父级是91.所以我想知道行1.1.1.1是否是节点91的列表中的最后一个。 –
这是真的,但正如我告诉行不嵌套在html中,所以选择器$(“。后继”,“#id_row”)给出空的结果集。 –