【问题标题】:JQuery move items in list when checked选中时JQuery在列表中移动项目
【发布时间】:2017-02-25 03:37:54
【问题描述】:

我一直在寻找一些代码,它们基本上会在选中复选框后将它们移动到列表的顶部。

我遇到了Move checkboxes on checked jQuery,这给了我一个很好的开始,但我现在陷入了另一个问题。

如果我在这个<ul> 列表中添加一个<li> 项目,但它只是一个没有<input> 部分的标准项目,它会阻止整个代码工作。

有没有我没见过的简单解决方法?我刚开始使用 JQuery,所以我很难说实话,所以它对我来说很新。

【问题讨论】:

标签: javascript jquery html checkbox


【解决方案1】:

使用上一个问题的代码。我们可以添加“typeof”来检查 li 中是否有输入。这样可以避免问题并保持 li 静态。

  var list = $("ul"),
        origOrder = list.children();
    
    list.on("click", ":checkbox", function() {
        var i, checked = document.createDocumentFragment(),
            unchecked = document.createDocumentFragment();
        for (i = 0; i < origOrder.length; i++) {
            if (typeof(origOrder[i].getElementsByTagName("input")[0]) != "undefined" && origOrder[i].getElementsByTagName("input")[0].checked) {
                checked.appendChild(origOrder[i]);
            } else {
                unchecked.appendChild(origOrder[i]);
            }
        }
        list.append(checked).append(unchecked);
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<ul>
<li><label><input type="checkbox" id="one" />One</label></li>
<li><label><input type="checkbox" id="two" />Two</label></li>
<li><label><input type="checkbox" id="three" />Three</label></li>
<li><label><input type="checkbox" id="four" />Four</label></li>
<li><label><input type="checkbox" id="five" />Five</label></li>
<li><p>Hello World!</p></li>
</ul>

【讨论】:

  • 效果很好,非常感谢,代码很好,效率很高。
猜你喜欢
  • 1970-01-01
  • 2013-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多