2016-10-28 58 views
0

私の問題はこれがトップレベルを変更することですlispan内容。 liが他にulを保持しているときにはspanが見つかりません。私はjQueryのセレクタが私の上位レベルの `div``の下にあるすべての".fancytree-node"要素を取得すると思っていました。jQueryが親子の子ulの要素を取得しない

私はjQuery 1.11.1を使用しています。私はセレクタを変更しようと多くの異なるメソッドを使用しようとしましたが、このjQueryステートメントと同じ結果が得られました。

jQueryとHTML:

$(function() { 
 
    $("#treeDestinationFancy .fancytree-icon").each(function() { 
 
    $(this).appendTo($(this).parent()); 
 
    }); 
 

 
    $("#treeDestinationFancy .fancytree-expander").each(function() { 
 
    $(this).appendTo($(this).parent()); 
 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="treeDestinationFancy "> 
 
    <ul> 
 
    <li> 
 
     <span class="fancytree-node fancytree-exp-n fancytree-ico-c"> 
 
    \t \t \t \t <span class="fancytree-title">[Drag here]</span> 
 
     <img class="fancytree-icon" alt="" src="/Images.gif"> 
 
     <span class="fancytree-expander"></span> 
 
     </span> 
 
    </li> 
 
    <li> 
 
     <span class="fancytree-node fancytree-exp-n fancytree-ico-c"> 
 
    \t \t \t \t <span class="fancytree-title">this item</span> 
 
     <img class="fancytree-icon" alt="" src="/Images.gif"> 
 
     <span class="fancytree-expander"></span> 
 
     </span> 
 
    </li> 
 
    <li class="fancytree-lastsib"> 
 
     <span class="fancytree-node fancytree-expanded fancytree-has-children fancytree-lastsib fancytree-exp-el fancytree-ico-e"> 
 
    \t \t \t \t <span class="fancytree-title">Forward</span> 
 
     <img class="fancytree-icon" alt="" src="/Images.gif"> 
 
     <span class="fancytree-expander"></span> 
 
     </span> 
 
     <ul> 
 
     <li> 
 
      <span class="fancytree-node fancytree-exp-n fancytree-ico-c"> 
 
    \t \t \t \t \t \t <span class="fancytree-expander"></span> 
 
      <img class="fancytree-icon" alt="" src="/Images.gif"> 
 
      <span class="fancytree-title">Host with Protocol</span> 
 
      </span> 
 
     </li> 
 
     <li> 
 
      <span class="fancytree-node fancytree-exp-n fancytree-ico-c"> 
 
    \t \t \t \t \t \t <span class="fancytree-expander"></span> 
 
      <img class="fancytree-icon" alt="" src="/Images.gif"> 
 
      <span class="fancytree-title">Audit Guid</span> 
 
      </span> 
 
     </li> 
 
     <li> 
 
      <span class="fancytree-node fancytree-exp-n fancytree-ico-c"> 
 
    \t \t \t \t \t \t <span class="fancytree-expander"></span> 
 
      <img class="fancytree-icon" alt="" src="/Images.gif"> 
 
      <span class="fancytree-title">Contact:Email [InnerText]</span> 
 
      </span> 
 
     </li> 
 
     </ul> 
 
    </li> 
 
    </ul> 
 
</div>

+0

あなたはuがしたいHTML出力のための一例を定義することはできますか?すべての '.fancytree-node'を'#treeDestinationFancy'に出すことを意味しますか? –

+0

最後のliにネストされたものと最上位の要素とでスパンがどのように異なっているか分かりますか?私はちょうどその子供のul内のスパンの位置を反転しようとしています。 – Naomarius

答えて

1

私はあなたが何をしようとしていると思っています。各ノードに3つの子を "fancytree-title"、 "fancytree-icon"、 "fancytree-expander"の順に並べるようにします。セレクタを変更して、先祖ノードではなく親ノードから選択するだけです。

$(function() { 
 
    $(".fancytree-node .fancytree-icon").each(function() { 
 
    $(this).appendTo($(this).parent()); 
 
    }); 
 

 
    $(".fancytree-node .fancytree-expander").each(function() { 
 
    $(this).appendTo($(this).parent()); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="treeDestinationFancy "> 
 
    <ul> 
 
    <li> 
 
     <span class="fancytree-node fancytree-exp-n fancytree-ico-c"> 
 
     <span class="fancytree-title">[Drag here]</span> 
 
     <img class="fancytree-icon" alt="" src="/Images.gif"> 
 
     <span class="fancytree-expander"></span> 
 
     </span> 
 
    </li> 
 
    <li> 
 
     <span class="fancytree-node fancytree-exp-n fancytree-ico-c"> 
 
     <span class="fancytree-title">this item</span> 
 
     <img class="fancytree-icon" alt="" src="/Images.gif"> 
 
     <span class="fancytree-expander"></span> 
 
     </span> 
 
    </li> 
 
    <li class="fancytree-lastsib"> 
 
     <span class="fancytree-node fancytree-expanded fancytree-has-children fancytree-lastsib fancytree-exp-el fancytree-ico-e"> 
 
     <span class="fancytree-title">Forward</span> 
 
     <img class="fancytree-icon" alt="" src="/Images.gif"> 
 
     <span class="fancytree-expander"></span> 
 
     </span> 
 
     <ul> 
 
     <li> 
 
      <span class="fancytree-node fancytree-exp-n fancytree-ico-c"> 
 
      <span class="fancytree-expander"></span> 
 
      <img class="fancytree-icon" alt="" src="/Images.gif"> 
 
      <span class="fancytree-title">Host with Protocol</span> 
 
      </span> 
 
     </li> 
 
     <li> 
 
      <span class="fancytree-node fancytree-exp-n fancytree-ico-c"> 
 
      <span class="fancytree-expander"></span> 
 
      <img class="fancytree-icon" alt="" src="/Images.gif"> 
 
      <span class="fancytree-title">Audit Guid</span> 
 
      </span> 
 
     </li> 
 
     <li> 
 
      <span class="fancytree-node fancytree-exp-n fancytree-ico-c"> 
 
      <span class="fancytree-expander"></span> 
 
      <img class="fancytree-icon" alt="" src="/Images.gif"> 
 
      <span class="fancytree-title">Contact:Email [InnerText]</span> 
 
      </span> 
 
     </li> 
 
     </ul> 
 
    </li> 
 
    </ul> 
 
</div>

+0

これは動作しますが、同じページで2番目のツリービューを使用して試してみました。同じことをしていて、一度に1つのツリーのみを有効にする必要があります。あなたは正しいですが、セレクタを一度に1つのツリーに制限するにはどうしたらいいですか? – Naomarius

+0

ちょうどもう一度私の実際のコードは少し異なりますが、私の環境でこれは動作しません。私は紛争を起こしているかもしれません。 – Naomarius

+0

しかし、これはあなたが質問で提供したコードで正しく動作しますか?異なるコードで別の質問がある場合は、別途質問してください。 –

0

ok.Iはあなたの問題を得ました。 LIを使ってすべての内側のULをラップする必要があります。私は以下のアップデートコードを持っています。これはうまくいきます。確認してください。

<div id="treeDestinationFancy"> 
    <ul> 
     <li> 
      <span class="fancytree-node fancytree-exp-n fancytree-ico-c"> 
       <span class="fancytree-title">[Drag here]</span> 
       <img class="fancytree-icon" alt="" src="/Images.gif"> 
       <span class="fancytree-expander"></span> 
      </span> 
     </li> 
     <li> 
      <span class="fancytree-node fancytree-exp-n fancytree-ico-c"> 
       <span class="fancytree-title">this item</span> 
       <img class="fancytree-icon" alt="" src="/Images.gif"> 
       <span class="fancytree-expander"></span> 
      </span> 
     </li> 
     <li class="fancytree-lastsib"> 
      <span class="fancytree-node fancytree-expanded fancytree-has-children fancytree-lastsib fancytree-exp-el fancytree-ico-e"> 
       <span class="fancytree-title">Forward</span> 
       <img class="fancytree-icon" alt="" src="/Images.gif"> 
       <span class="fancytree-expander"></span> 
      </span> 
      <li> 
      <ul> 
       <li> 
        <span class="fancytree-node fancytree-exp-n fancytree-ico-c"> 
         <span class="fancytree-expander"></span> 
         <img class="fancytree-icon" alt="" src="/Images.gif"> 
         <span class="fancytree-title">Host with Protocol</span> 
        </span> 
       </li> 
       <li> 
        <span class="fancytree-node fancytree-exp-n fancytree-ico-c"> 
         <span class="fancytree-expander"></span> 
         <img class="fancytree-icon" alt="" src="/Images.gif"> 
         <span class="fancytree-title">Audit Guid</span> 
        </span> 
       </li> 
       <li> 
        <span class="fancytree-node fancytree-exp-n fancytree-ico-c"> 
         <span class="fancytree-expander"></span> 
         <img class="fancytree-icon" alt="" src="/Images.gif"> 
         <span class="fancytree-title">Contact:Email [InnerText]</span> 
        </span> 
       </li> 
      </ul> 
     </li> 
     </li> 
    </ul> 
</div> 
+0

それは私の悪い微妙なコピーパスタミスです。しかし、スペースがあっても、私はまだ最後のメインリのulリストの下のどのノードにも当てられません。 – Naomarius

+0

私はあなたの懸念に従ってコードを編集しました。今はうまくいきます。 LIを持つすべての内部ULをラップする必要があります。 –

+0

'li'は別の' li'を含むことができません。 'li'は' ul'をラップします。このコードはすべて、階層構造を変更して2番目の 'ul'が' li class = "fancytree-lastsib"の兄弟の下にあるようにしています。 –

関連する問題