[英]JQuery - How to add a single html tag to some html?
我想在下面的文本之前插入一个<span> (在LINK之前):
<li><a href="">LINK</a></li>
所以,上面变成了
<li><a href=""><span>LINK</a></li>
这是我的JQuery代码:
$('#mainnav li a').prepend('<span>');
当我在firebug中查看代码之后,我看到<span></span>
,我如何获得开始span标记而不是结束标记?
首先,你想要的是格式错误的HTML。 jQuery即使不是不可能创建它也会变得困难。 我建议只用一步而不是多步。 尝试:
$("li > a").each(function() {
$(this).contents().wrapAll("<span>");
});
输入:
<ul>
<li><a href="...">testing</a></li>
<li><a href="...">rich <b>content</b> with <i>inner tags</i></a></li>
</ul>
输出:
<ul>
<li><a href="..."><span>testing</span></a></li>
<li><a href="..."><span>rich <b>content</b> with <i>inner tags</i></span></a></li>
</ul>
我遇到了一个问题,我正在使用第三方API,它使用php curl将平面HTML放入我的网页。 在api HTML中返回的是一些格式错误的span标签,它们只是在IE中删除了我的渲染。 我使用Jquery的replaceWith()函数来解决问题。 下面是一个例子:
格式错误的HTML :(注意未打开的span标记)
<a class="aa_float_right aa_navlink" href="http:whatever">My Account</a></span>
我的解决方案
$('.aa_navlink').replaceWith('<span class="test"><a class="aa_float_right aa_navlink" href="http:whatever">My Account</a>');
产生的HTML:
<span class="test"><a class="aa_float_right aa_navlink" href="http:whatever">My Account</a></span>
BOOM我们现在已经很好地形成了HTML,不用谢谢这么糟糕的第三方API(我的意思是真的很糟糕)。
SaltWater公司的开发人员给了我这个修复程序。
我不知道你为什么要它,但它可以这样做,
$('#mainnav li a').html(function(i,v){
return '<span>' + v;
})
当您使用prepend
,您不会向页面添加标记文本,而是向页面添加元素 。 元素没有“开始”和“结束”标记,元素是元素。 如果你想在一个span
包装一堆元素(我猜这是你想要的,如果你想在一个地方插入它的开头而在另一个地方插入它的结尾),你需要添加跨度到容器然后将元素移入其中。
例如,这会将所有链接移出元素foo
并将它们移动到container
内的span container
:
var stuff;
var container;
stuff = $('#foo a');
span = $("<span style='background-color: yellow'>");
span.append(stuff);
$('#container').append(span);
许多jQuery方法被设计为仅从半写标签自动创建元素,例如,对于.prepend(), "<span>"
将导致整个span元素被添加到DOM。 或者,正如您在Firebug中看到的那样, "<span></span>"
首先插入到锚元素中。
我不明白你为什么要创建无效的HTML,但如果必须,你可以这样做:
$("li > a").html("<span>"+$("li > a").html());
或者,正如Reigel建议的那样,使用.html()方法的匿名函数(我很快就写了我的答案,很明显,非常有意思):
$("li > a").html(function (idx, html) {
return "<span>" + html;
});
否则,您似乎想要在span中包装anchor元素的内容。 在这种情况下,您应该使用其中一个jQuery 包装 方法 :
$("li > a").wrap("<span>");
你不是要自己创建起始元素和结束元素(使用jQuery时)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.