我想在纯文本周围打一个标签,这些标签没有什么东西可以轻易地定位它。
例如,这个:
<div class="checbox">
<input type="checkbox">
some text
</div>
应该成为:
<div class="checbox">
<input type="checkbox">
<label>some text</label>
</div>
如果我可以修改HTML,这将是微不足道的,但我不能。
使用jQuery我怎么能用标签包装这个“一些文本”?
答案 0 :(得分:2)
如果html结构是常量,那么你想用class checkbox
$($('.checbox')[0].lastChild).wrap('<label />')
label {
color: red
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="checbox">
<input type="checkbox" />
some text
</div>
如果您有多个这样的元素,那么
$('.checbox').each(function(){
$(this.lastChild).wrap('<label />')
})
label {
color: red
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="checbox">
<input type="checkbox" />
some text
</div>
<div class="checbox">
<input type="checkbox" />
some text 2
</div>
答案 1 :(得分:1)
请参阅http://jsfiddle.net/zxhcb6sw/
它会将所有文本节点包装在div中:
$( ".checbox" )
.contents()
.filter(function() {
return this.nodeType === 3;
})
.wrap( "<label></label>" );