我想制作以下代码:
<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 for find h2 text并在h2
之前和p
之后添加wrap。
我失败的代码:
$.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>');
答案 0 :(得分:2)
方法.add()允许将元素添加到jquery对象。
然后你可以使用.wrapAll()在jQuery中擦除一组元素。
var $h2 = $("h2:containsExact(" + byItem +")");
if ($h2.length) {
$h2.add( $h2.next('p') )
.wrapAll( $('<div>').addClass('highlight') );
}
上的工作示例
答案 1 :(得分:2)
只需使用jQuery函数:
var byItem = "TEXTz"
$("h2")
.filter(
function() {
if ($(this).html() == byItem) {
return true;
}
return false;
}
)
.next("p")
.andSelf()
.wrapAll($("<section>")
.addClass("highlightitem")
);