我正在尝试使用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," ");
没有给出适当间隔的字符串。
为什么排序会改变行为,我该怎么解决?请感谢任何回应
答案 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(' ');
将列表项放入适当间距的字符串中