【问题标题】:Jquery sort is not working with children tagJquery 排序不适用于子标签
【发布时间】:2012-10-02 23:35:45
【问题描述】:

看下面的代码

source = $("<root><item desc='SQL'/><item desc='Microsoft'/><item desc='Action Script'><item desc='Java script'></root>")

//WAY 1: This way is not working...
source.children().sort(function(a, b)
    {
        var aText = $(a).attr("desc").toLowerCase();
        var bText = $(b).attr("desc").toLowerCase();

        if(aText == bText)
            return 0;

        return aText > bText ? 1 : -1;
    });

alert(source[0].outerHTML);

//WAY 2: This is working...
var temp = source.children();

temp.sort(function(a, b)
    {
        var aText = $(a).attr("desc").toLowerCase();
        var bText = $(b).attr("desc").toLowerCase();

        if(aText == bText)
            return 0;

        return aText > bText ? 1 : -1;
    });

source = $("<root/>");
source.append(temp);

alert(source[0].outerHTML);

方式 1 不工作,方式 2 工作良好。为什么我应该将孩子分配给另一个变量然后排序,将它们分配回原始变量?这是正确有效的方法吗?

你可以试试这个FIDDLE....

【问题讨论】:

  • 你们为什么投反对票?这个问题是不清楚还是没有展示任何研究工作?
  • 在 meta.so meta.stackexchange.com/questions/158160/… 上看到了你的 qn - 我已经对你的一些帖子投了赞成票,但不是这个:你需要说出你对方式 1 的期望以及你所看到的, 否则你对试图回答 qn 的人提出了太多要求。你很幸运能得到你的答案。尝试修复 qn,我会支持它。不久之后你就会被解禁。

标签: javascript jquery html jquery-ui-sortable


【解决方案1】:

jQuery 集合中子节点的顺序与子节点作为 XML 节点的顺序无关。在 jQuery 集合中,它们只是指向节点的指针。在您的第二个示例中,您将它们按新顺序添加到新根目录中。

打个比方:假设您有一群棒球运动员,还有他们的棒球卡。您按照击球顺序排列棒球运动员,然后按照与球员相同的顺序排列他们的牌。

在您的第一个示例中,您只是对棒球卡进行排序。玩家自己不动。

在第二个示例中,您对卡片进行排序,然后告诉玩家按照卡片排序的顺序移动到新行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    相关资源
    最近更新 更多