【问题标题】:Custom jQuery Hierarchy自定义 jQuery 层次结构
【发布时间】:2012-01-13 20:27:29
【问题描述】:

我现在使用 jQuery 根据用户输入动态生成 DIV。由于这些是如何生成和格式化的,DIV 之间没有直接的父/子关系。事实上,我想最简单的解释方式就是树的生成。我希望能够创建一个自定义层次结构,这样如果树顶部的元素被删除,那么它的所有伪子元素也会被删除。

下面是一个有点形象化的例子。图表遵循水平层次结构。

Level 1   Level 2    Level 3
-----------------------------

   X        X          X  \
                       X   | >> These 3 elements are pseudo-children of 
                       X  /     the first elements in level 1 and level 2

            X   <<<<<< X  << The element in level 2 is pseudo-child of  
                       X     the first element in level 1

   X        X          X

            X          X
                       X     

更新:

代码示例:

<tr>
  <td>Level1</td>
  <td>Level2</td>
  <td>Level3</td>
</tr>
<tr>
  <td />
  <td />
  <td>Level3</td>
</tr>
<tr>
  <td />
  <td />
  <td>Level3</td>
</tr>
<tr>
  <td />
  <td>Level2</td>
  <td>Level3</td>
</tr>
<tr>
  <td />
  <td />
  <td>Level3</td>
</tr>

等等...(匹配图表)

【问题讨论】:

  • 关卡容器是同胞吗?
  • 并非如此。它是表格格式的。所以一个级别是一列,​​一个关系是一行,特定的 TD 填充了内容
  • 因此,当您删除顶部的元素(第一列中的元素)时,只需删除整行(以及所有伪子元素)。这样不行吗?
  • 如果它共享行,它将删除父级,以及仅第一个直接伪子级。
  • 那么您只需要继续删除后续行,直到您到达具有相同级别元素的行...并确保您不要删除第一行,如果它包含父元素(但只清除元素右侧的单元格)。

标签: jquery tree parent-child hierarchy


【解决方案1】:

我认为您想要的是 HTML5 中的 Flexible Box Module。查看一组非常好的关于它的文章here

还有操场 http://flexiejs.com/playground/(以及 x-browser javascript 库)


我的猜测是,在 UI 中使用表执行此操作的唯一方法是将树也存储在内存中,然后使用它来“知道”要删除的内容。


也许我遗漏了什么,但这有什么问题:

<div id="a">
   <div id="b">
      <div id="c" />
      <div id="d" />
      <div id="e" />
   </div>
   <div id="f">
      <div id="g" />
      <div id="h" />
   </div>
</div>
<div id="i">
   <div id="j">
      <div id="k" />
   </div>
   <div id="l>
      <div id="m" />
   </div>
</div>



Level 1   Level 2    Level 3
-----------------------------

   a        b          c  \
                       d   | >> These 3 elements are pseudo-children of 
                       e  /     the first elements in level 1 and level 2

            f   <<<<<< g  << The element in level 2 is pseudo-child of  
                       h     the first element in level 1

   i        j          k

            l          m
                       n

【讨论】:

  • 层次结构是使用拖放系统构建的。不幸的是,这种方法会因为用户错误而变得混乱。
  • +1,我希望这首先可以解决。试了一会儿,格式化和事件监听器的干扰变得太大了
  • 您的回答在技术上将完全满足我的需求,只是浏览器还没有真正支持它。我相信我会按照我对 OP 的评论中所述对元素使用自定义属性。不过,谢谢,你让我打开了一个全新的灵活世界!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 2017-08-23
  • 2021-02-18
相关资源
最近更新 更多