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

时间:2019-02-03 12:48:14

标签: jquery-ui-sortable

我正在尝试使用jquery ui sortable对字符串进行排序后从列表中获取字符串 使用简单列表(无需排序)

    <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)
};

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

2 个答案:

答案 0 :(得分:1)

要获取文本,我将创建一个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一起使用。

答案 1 :(得分:1)

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

将列表项放入适当间距的字符串中