我想编写以下代码:
<h2>TEXTz</h2>
<p>ARTICLE</p>
<h2>TEXTx</h2>
<p>ARTICLE</p>
看起来像这样:
<div class="highlight">
<h2>TEXTz</h2>
<p>ARTICLE</p>
</div>
<h2>TEXTx</h2>
<p>ARTICLE</p>
但我必须使用:contains 来查找 h2 文本并在 h2
之前和 p
之后添加换行。
我失败的代码:
$.extend($.expr[':'],{containsExact: function(a,i,m){return $.trim(a.innerHTML.toLowerCase()) === m[3].toLowerCase();}});
var byItem = "TEXTz"
var ItemTitle = $("h2:containsExact(" + byItem +")").text();
var ItemDes = $("h2:containsExact(" + byItem +")").next("p").text();
$("h2:containsExact(" + byItem +")").html('<section class="highlightitem"><h2>' + ItemTitle + '</h2><p>' + ItemDes + '</p></div>');
最佳答案
方法.add()允许向 jquery 对象添加元素。
然后你可以使用.wrapAll()在 jQuery 中包装一组元素。
var $h2 = $("h2:containsExact(" + byItem +")");
if ($h2.length) {
$h2.add( $h2.next('p') )
.wrapAll( $('<div>').addClass('highlight') );
}
关于 jsfiddle 的工作示例
关于javascript - 如何用 jQuery 包裹 2 个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8849149/