1
親がクリックされたときに枝を表示/崩壊できるような構造のようなツリーを作ろうとしています。私がこれまでに試したところでは、ツリーのアイテムがクリックされたときにツリー全体が崩壊するのを防ぐことはできないと思われ、ルート要素だけが残っています。私はクラスの代わりにユニークなIDを使用して、私は子供、親、兄弟、ルートul、すべてのul、クラスに持っているとしよう...何も私のために働いた。常にこの奇妙な行動、エラー、または何も。親がクリックされたときに子を切り替えます
ビュー:
<script type="text/javascript">
$(document).ready(function() {
$('.tree').click(function() {
$(this).find('ul').slideToggle();
});
});
</script>
<h2>testArbre</h2>
<ul>
<li class="tree">
@Model.Name
@ShowTree(@Model)
</li>
</ul>
@helper ShowTree(Tree tree)
{
<ul>
@foreach (var branch in tree.Branch)
{
<li class="tree">
@branch.Name
@if (branch.Branches.Any())
{
@ShowTree(branch)
}
</li>
}
</ul>
}
モデル:
public class ArbreDroits
{
public string Name { get; set; }
public List<Tree> Branches { get; set; }
public Tree(string name)
{
Name = name;
Branches = new List<Tree>();
}
public ArbreDroits AddBranch(string name)
{
Branches.Add(new Tree(name));
return Branches.Last();
}
}
生成されたHTMLは次のようになります。
<ul>
<li class="tree">
racine
<ul>
<li class="tree">
noeud1
<ul>
<li class="tree">
noeud1Fils1
</li>
<li class="tree">
noeud1Fils2
<ul>
<li class="tree">
noeud1Fils2Fils1
<ul>
<li class="tree">
noeud1Fils2Fils1Fils1
</li>
</ul>
</li>
</ul>
</li>
<li class="tree">
noeud1Fils3
</li>
</ul>
</li>
<li class="tree">
noeud2
</li>
</ul>
</li>
</ul>
ASP.NETコードはここではまったく関係ありません...このコードに生成されたHTMLを追加して、実際のモデルを作成できますか? –
これは、クリックイベントの伝播と関係があると思います...しかし、少なくともレンダリングされたHTMLマークアップを提供します。EDIT: '.tree'要素が他の' .tree'要素の中に入れ子になっていますか?もしそうなら、あなたは '$(this).children( 'ul')。slideToggle();'とイベントの伝播を止めるべきです –