Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:如何附加到列表项,但在子列表之前?_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery:如何附加到列表项,但在子列表之前?

Javascript jQuery:如何附加到列表项,但在子列表之前?,javascript,jquery,html,Javascript,Jquery,Html,我需要使用jQuery将一些内容(可能是文本或其他元素)附加到无序列表中项目的末尾。该项可能包含子列表,因此内容需要显示在该子列表之前 我的第一反应是尝试: $('li#someId').append(newContent); 当然,如果项目包含子列表,则新内容将出现在该列表之后。我想不出一个简单的、通用的方法来告诉jQuery将内容附加到项目中,但是在任何子列表之前。我最终写了这个函数来代替它: function appendBeforeSublist(listItem, content)

我需要使用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的解决方案是更好还是更差?如果列表很长,我的代码可能会大量执行此功能


有关说明,请参见JSFIDLE中的。

使用listItem.prepend(内容)将新内容置于listItem中任何内容之前。@keune:正如问题所述,我想将内容附加到列表项内容中。例外情况是,当列表项的内容包含另一个子列表时,该内容应显示在该子列表之前。