繁体   English   中英

如何使用jQuery包装2个元素?

[英]How to wrap in 2 elements with jQuery?

我想制作以下代码:

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

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的工作示例

只需使用jQuery函数:

var byItem = "TEXTz"

    $("h2")
        .filter(
            function() {
                if ($(this).html() == byItem) {
                    return true;
                }
                return false;
           }
       )
       .next("p")
       .andSelf()
       .wrapAll($("<section>")
            .addClass("highlightitem")
       );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM