【发布时间】:2019-05-19 22:07:54
【问题描述】:
我想用 Lit 元素构建一个自定义树表,我只是想知道是否可以使用 jQuery 树网格插件以某种方式实现它。
这是我现在最好的(此解决方案未使用 Lit 元素进行测试):
代码:
var toggler = document.getElementsByClassName("caret");
var i;
var padding = 0;
console.log(this);
console.log(this.parentElement);
for (i = 0; i < toggler.length; i++) {
console.log(toggler[i]);
toggler[i].style.paddingLeft = (padding * 10) + "%";
var list = toggler[i].parentElement.getElementsByClassName("name");
var j;
for (j = 0; j < list.length; j++) {
list[j].style.paddingLeft = (padding * 15) + "%";
}
padding++;
toggler[i].addEventListener("click", function() {
this.parentElement.querySelector(".nested").classList.toggle("active");
this.classList.toggle("caret-down");
});
}
ul,
#myUL {
list-style-type: none;
}
#myUL {
margin: 0;
padding: 0;
}
.caret {
cursor: pointer;
-webkit-user-select: none;
/* Safari 3.1+ */
-moz-user-select: none;
/* Firefox 2+ */
-ms-user-select: none;
/* IE 10+ */
user-select: none;
}
.caret::before {
content: "\25B6";
color: black;
display: inline-block;
margin-right: 6px;
}
.caret-down::before {
-ms-transform: rotate(90deg);
/* IE 9 */
-webkit-transform: rotate(90deg);
/* Safari */
'
transform: rotate(90deg);
}
.nested {
display: none;
}
.active {
display: block;
}
ul {
width: 800px;
/* change it to whatever you like */
position: relative;
/* these should be probably already set up by reset.css */
list-style-type: none;
margin: 0;
padding: 0;
}
ul:before,
ul:after {
text-align: center;
display: block;
border: 1px solid black;
border-bottom: 0;
width: 48%;
}
li {
text-align: left;
width: 48%;
float: left;
border: 1px solid black;
margin-bottom: -1px;
}
li:nth-child(even) {
margin-left: -1px;
background-color: antiquewhite;
}
.as-console-wrapper {
max-height: 64px !important;
}
<ul id="myUL">
<li><span class="caret"><span>Coffee</span></span>
<ul class="nested">
<li><span class="name">Coffee</span></li>
<li><span>Timeline</span></li>
<li><span class="name">Coffee</span></li>
<li><span>Timeline</span></li>
<li><span class="caret"><span>Coffee</span></span>
<ul class="nested">
<li><span class="name">Coffee</span></li>
<li><span>Timeline</span></li>
<li><span class="caret"><span>Coffee</span></span>
<ul class="nested">
<li><span class="name">Coffee</span></li>
<li><span>Timeline</span></li>
<li><span class="name">Coffee</span></li>
<li><span>Timeline</span></li>
<li><span class="name">Coffee</span></li>
<li><span>Timeline</span></li>
<li><span class="name">Coffee</span></li>
<li><span>Timeline</span></li>
</ul>
</li>
<li><span>Timeline</span></li>
</ul>
</li>
<li><span>Timeline</span></li>
</ul>
</li>
<li><span>Timeline</span></li>
</ul>
我不知道这种树表的一般或最佳解决方案是什么,这是我最好的猜测,如果没有 jQuery,我应该从哪里开始。有没有更好的方法来创建这种组件?
我想创建这样的东西https://vaadin.com/docs/v7/framework/components/components-treetable.html
我只是好奇树表通常在网络上是如何实现的。
【问题讨论】:
-
我的意见:如果这是可能的,你这样做,你会恨自己以后的决定。
-
你知道我应该如何解决这个问题吗?我真的找不到很好的解决方案。我将用我所拥有的最好的东西更新帖子,但我只在没有 Lit-Element 的情况下对其进行了测试
-
@TiborFekete 您可以将
lit-html与jquery 一起使用,而不是lit-element...这里是一个示例:stackblitz.com/edit/…
标签: javascript jquery treetable lit-element