2

行で構成されるテーブルがあります。各行には、id、data-parent 属性、および 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="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 セレクターを使用して、データの親とレベルでフィルタリングしようとしましたが、うまくいきませんでした。ありがとう。

4

3 に答える 3

1

一日中苦労してこの解決策にたどり着きました。ドラッグされた行と同じレベルの行のトップノードを見つけ、ドラッグされた要素の前に要素が最後にあったかどうかを確認します。

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"));
}
于 2013-10-28T14:53:10.763 に答える
0

次のことを試しましたか:

var lastTr = $('#TABLEID tr').last();

これは、現在のテーブルの最後の<TR>要素を見つける必要があります (「TABLEID」でマークされています)

詳細については、こちらjQuery.last()をご覧ください

于 2013-10-28T08:27:51.397 に答える
0

あなたのコード例は、virtual level optionあなたが本当に a を持っているvirtual level option場合、これが機能するはずの a の説明と矛盾しています。ここに示されているように: http://jsfiddle.net/dBT3D/ HTML が適切にフォーマットされていないためにブラウザーで問題が発生していたため、TR を DIV に変更しました。

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}

于 2013-10-28T08:27:10.353 に答える