应用 sortableJS 后列表项中的字符串

string from list items after sortableJS has been applied

我正在尝试使用 jquery ui 排序后从列表中获取字符串 使用简单列表(不排序)

    <ul id = "description">
<li>one</li>
<li>two</li>
<li>three</li>
</ul>

正在申请

$('#description').text().replace(/(\r\n|\n|\r)/gm," ");

我得到:一二三 但是,如果我使列表可排序并四处移动项目,并使用

function getOrder() {
            alert($("#description").html());//gives a correct html ul
            alert($("#description").text());// no spaces between words
            var ans = $('#description').text().replace(/(\r\n|\n|\r)/gm," ");
                alert("You got " + ans)
};

输出变为三二一或三二一 - 间距混乱。 $("description").html() 显示 html 是正确的( style="" 由于某种原因被添加到 li 标签中),但是 $('#description').text().replace(/(\r\n|\n|\r)/gm," "); 没有给出适当间隔的字符串。 为什么排序会改变行为,我该怎么做才能解决这个问题?请感谢任何回复

要获取文本,我将创建一个 toString 函数:

function toString(element) {
    var children = element.children;
    var str = '';

    for (var i = 0; i < children.length; i++) {
        str += (!i ? '' : ' ') + children[i].textContent;
    }
    return str;
}

然后使用作为参数传入的列表的 HTMLElement(不是 jQuery 对象)调用该函数。

此解决方案不使用 jQuery,因此您可以将其与 SortableJS 或 jQuery Sortable 一起使用。

$.map( $('li'), function (element) { return $(element).text() }).join(' ');

努力将列表项放入适当间隔的字符串中