jQuery-Through - contents() -Methode
Beispiel
Findet alle Textknoten in den Absätzen und packt sie in fette Tags.
$("p").contents().filter(function(){ return this.nodeType != 1; }).wrap("<b/>");
Definition und Verwendung
Die contents() -Methode erhält die Kindknoten jedes Elements in der übereinstimmenden Element集合, einschließlich Text- und Kommentarknoten.
Syntax
.contents()
Detaillierte Erklärung
Wenn ein jQuery-Objekt gegeben ist, das eine Sammlung von DOM-Elementen darstellt, ermöglicht die .contents() -Methode, die direkten Kindknoten dieser Elemente im DOM-Baum abzurufen und einen neuen jQuery-Objekt mit übereinstimmenden Elementen zu konstruieren. .contents() und .children() 方法类似,不同的是前者在结果 jQuery 对象中包含了文本节点以及 HTML 元素。
.contents() 方法也可以用于获得 iframe 的内容文档,前提是该 iframe 与主页面在同一个域。
请思考下面这个带有一些文本节点的 <div>,每个节点被两个折行元素 (<br />) 分隔:
<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>
我们可以使用 .contents() 方法来把文本块转换为形式良好的段落:
$('.container').contents().filter(function() { return this.nodeType == 3; ) .wrap('<p></p>') .end() .filter('br') .remove();
这段代码首先会接收 <div class="container"> 的内容,然后滤过其文本节点,将文本节点封装入段落标签中。这是通过测试元素的 .nodeType 属性实现的。该属性存有指示节点类型的数字代码;文本节点使用代码 3。内容会被再次过滤,这次针对 <br /> 元素,这些元素会被移除。