jquery contents()方法

修饰文本节点可以用contents()方法来进行操作,跟这个方法经常同时使用的方法还有filter()方法和wrap()方法

<div class="container">
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
    <br /><br />
    Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
    <br /><br />
    Duis aute irure dolor in reprehenderit in voluptate velit 
    esse cillum dolore eu fugiat nulla pariatur.
</div>

上面是一段文本,如果想要直接更改这段文本的样式,比如段落间的行间距,不用<br />换行等比较困难,那么我们可以将它用p标签包裹,对p标签进行修饰,就比较容易,so:

$(".container").contents().filter(function(){
    return this.nodeType == 3;
}).wrap("<p class='sty' style='color:red'></p>")
.end().filter("br").remove();

以上代码将会把<div class="container"></div>中的所有文本和注释节点转换为以下代码:

<div class="container">
    <p class="sty" style="color:red">...</p>
    <p class="sty" style="color:red">...</p>
    <p class="sty" style="color:red">...</p>
</div>

这样对p标签修饰就非常方便了。
这里边用到了其他几个很有用的方法,在这里也提一下:

  • filter()方法
    该方法返回带有符合一定规则的元素,点击查看 filter()方法
    本例中,这种规则为nodeType值为3的元素,也就是节点类型为text元素,这里有 nodeType属性详解

  • wrap()方法
    该方法用指定的元素来包裹每个被选中的元素,点击查看 wrap()方法
    本例中,通过filter()方法选出text元素后,用<p></p>标签进行包裹,重要目标已完成,但是<br />标签还存在,所以需要将之去掉

  • end()方法
    该方法结束当前新对象的操作,回到最初的旧对象,也就是从$("p")回到$(".container")对象,点击查看 end()方法
    其实就是这样的:

$(".container").contents().filter().wrap();
$(".container").filter().remove();

只不过end()方法能让整个代码连成一块…
然后呢,就是继续用filter()方法选出<br />标签,然后remove(),完成!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值