我需要使用jQuery将一些内容(可能是文本或其他元素)附加到无序列表中的项目的末尾。该项目可能包含一个子列表,因此内容需要在之前出现该子列表。
我的第一直觉是尝试:
$('li#someId').append(newContent);
当然,如果项目包含子列表,则新内容出现在该列表之后。我无法找出一种简单,通用的方式来告诉jQuery将内容附加到项目中,但是在任何子列表之前。我最后编写了这个函数来代替它:
function appendBeforeSublist(listItem, content) {
var sublist = listItem.find('ul:first');
if (sublist.length > 0) {
sublist.before(content);
} else {
listItem.append(content);
}
}
它没有感觉正确,因为我认为必须有一种类似jQuery的方式来做到这一点。我怎样才能使用jQuery选择器和函数?此外,就性能而言,更像是jQuery的解决方案是更好还是更差?如果列表很长,我的代码可能会执行很多功能。
有关说明,请参阅JSFiddle中的my experiment。