gpt4 book ai didi

javascript - 在排序 html 元素时使用 jQuery appendTo()

转载 作者:行者123 更新时间:2023-11-28 01:48:02 25 4
gpt4 key购买 nike

我需要对某些容器内的 html 节点进行有效排序。这是我所做的简化版本:

<html>
<ul class="navigation">
<li class="first">Main</li>
<li class="second">HTML и CSS tricks</li>
<li class="third">Study</li>
<li class="fourth">HTML reference</li>
</ul>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script>
var rows = $( ".navigation" ).children();

function sortAlpha(a,b){
return a.innerHTML.toLowerCase() > b.innerHTML.toLowerCase() ? 1 : -1;
};

rows.sort(sortAlpha).appendTo('.navigation');
</script>
</html>

和我一起工作的一些人对这条线持怀疑态度

rows.sort(sortAlpha).appendTo('.navigation'); 

他们问这样使用 appendTo 是否可以,也许使用这种方法有(或将来会有)一些缺点,为什么使用 appendTo 会替换父容器的内容以及为什么它不会只是将排序好的东西添加到父容器中?如果它是 jQuery 的临时功能并且将来不会那样工作怎么办?

我需要说的是,实际情况更复杂,例如我们使用允许我们在前端进行面向对象编程的库,而且每个需要排序的元素都是表格的一行,其中包含一些具有事件绑定(bind)的控件。

想法是用已排序的元素替换 dom 节点的内容,这样这个库就不会注意到这一点。我在实际代码中使用了上述方法,至少目前没有错误,但问题仍然存在:1) 这种方法有什么缺点,2) 什么是更好的选择?

最佳答案

这包含在 documentation 中对于 .appendTo():

We can also select an element on the page and insert it into another:

$( "h2" ).appendTo( $( ".container" ) );

If an element selected this way is inserted into a single location elsewhere in the DOM, it will be moved into the target (not cloned)...

因此,由于您正在选择页面上已存在的元素,并使用仅匹配单个元素的选择器调用 .appendTo(),因此这些选定元素将移至新目标中元素,按照它们在您的匹配元素集中的顺序。将它们放回同一个元素中是无关紧要的。

What are the drawbacks?

我想不到了。您正在使用函数功能的记录方面。 .appendTo() 的工作方式不太可能改变。

关于javascript - 在排序 html 元素时使用 jQuery appendTo(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21410053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com