Javascript jQuery前置打开标记追加关闭标记
首先,我熟悉。Javascript jQuery前置打开标记追加关闭标记,javascript,jquery,append,prepend,Javascript,Jquery,Append,Prepend,首先,我熟悉。wrapAll(),这不是我需要的。我有一些无法更改的标记,需要将所有内容包装在中 以下是我试图做的: $('nav[role=“breadcrumb”]ul a')。包装('li>'); $('nav[role=“breadcrumb”]ul li:last')。在('li>之后); $('nav[role=“breadcrumb”]ul')。追加('') 健康选择胆固醇试剂盒 jQuery只适用于完整的元素,不能只附加结束或开始标记 如果ul没有任何其他列表项,您可以简
wrapAll()
,这不是我需要的。我有一些无法更改的标记,需要将所有内容包装在
中
以下是我试图做的:
$('nav[role=“breadcrumb”]ul a')。包装('li>');
$('nav[role=“breadcrumb”]ul li:last')。在('li>之后);
$('nav[role=“breadcrumb”]ul')。追加('')代码>
健康选择胆固醇试剂盒
jQuery只适用于完整的元素,不能只附加结束或开始标记
如果ul没有任何其他列表项,您可以简单地使用wrapInner
$('nav[role="breadcrumb"] ul').wrapInner("<li />");
$('nav[role=“breadcrumb”]ul').wrapInner();
如果它确实包含LI的,最简单的方法是分离它们,包装内部,然后附加它们
var $lis = $('nav[role="breadcrumb"] ul > li').detach();
$('nav[role="breadcrumb"] ul').wrapInner("<li />").prepend($lis);
var$lis=$('nav[role=“breadcrumb”]ul>li').detach();
$('nav[role=“breadcrumb”]ul').wrapInner(“”).prepend($lis);
首先尝试创建您的,然后将选择器附加到其中:
var $li = $('<li>').append('nav[role="breadcrumb"] ul a');
var$li=$(“”).append('nav[role=“breadcrumb”]ul a');
然后使用$li替换或附加到您喜欢的任何位置。.contents()
将获取所有子节点,包括文本节点
$('nav[role="breadcrumb"] ul').contents().filter(function() {
return $.trim($(this).text())!=="";
}).wrap('<li/>');
$('nav[role=“breadcrumb”]ul').contents().filter(函数(){
返回$.trim($(this).text())!=“”;
}).wrap(“”);
编辑:添加了过滤方法以消除空白文本节点是否有任何黑客攻击?我能做我正在尝试的事情吗?我很感谢你的帮助,但不幸的是,这似乎并不能解决问题。wrapInner的第一位代码将UL中的所有内容包装在一个LI标记中,而我需要As和最后一位文本都包装在LI中。当使用jQuery将每个A包装在一个LI中,然后将代码与$lis一起使用时。。。似乎什么也没有发生:(如果没有UL中的纯文本,这将很容易。您尝试过我的第二个代码段吗?它应该考虑到UL中存在LI。是的,我尝试过使用$('nav[role=“breadcrumb”]UL a')。wrap('LI> ');然后是第二个代码段中的两行代码,但它没有做任何事情:(最后一行仍然没有包装。哈哈,这太接近了!但我的UL中确实有两个空的LIs,这让事情变得有点糟糕:(谢谢你的帮助,但不幸的是我无法让它工作:(
$('nav[role="breadcrumb"] ul').contents().filter(function() {
return $.trim($(this).text())!=="";
}).wrap('<li/>');