строка из элементов списка после применения sortableJS - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь получить строку из списка после ее сортировки с помощью jquery ui sorttable. Используя простой список (без сортировки)

    <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," "); не дает правильно расположенную строку.Почему сортировка меняет поведение и что я могу сделать, чтобы решить эту проблему?Цените любой ответ, пожалуйста

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019
$.map( $('li'), function (element) { return $(element).text() }).join(' ');

работает, чтобы поместить элементы списка в правильно расположенную строку

0 голосов
/ 03 февраля 2019

Чтобы получить текст, я бы создал функцию 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.

...