javascript - 如何用 jQuery 包裹 2 个元素?

标签 javascript jquery find

我想编写以下代码:

<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>');

http://jsfiddle.net/NDUzW/

最佳答案

方法.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/

相关文章:

regex - find -regex 不适用于 {} 说明符

find - 我如何找出 Git 认为的顶级工作目录是什么?

javascript - 为什么 JS 需要对象/数组存在

javascript - 使用 columnToggler 获取 toggleEvent 中的列组件对象

javascript - Angular 中使用方括号的目的是什么?

javascript - 是否有一种 ES6 方法可以在数组中搜索包含另一个数组元素的元素?

javascript - 使用 Emberjs 删除模型的所有项目

javascript - jQuery scrollTop 检测需要很长时间

javascript - 绝对 HTML 元素和浏览器滚动

linux - 加速使用多个查找命令的 bash 脚本