给出两个元素,围绕异构元素包装html?

时间:2012-05-23 03:50:49

标签: jquery

鉴于两个有序但不一定是连续的兄弟元素,我如何在它们周围包装html?

$(element_a).before( "<span class='wow'>" );
$(element_b).after( "</span>" );

上面没有用,因为它关闭了我的开头标签,并没有插入后者。

(兄弟姐妹是各种类型和类别的杂技团队,所以使用切片帮助完成这项任务很困难,但也许我没想过。)

2 个答案:

答案 0 :(得分:1)

$("<span class='wow'></span").appendTo('#container');
$(element_a, element_b).each(function() {
   $(this).clone(true).appendTo(".wow");
   $(this).remove()
})

http://jsfiddle.net/KZtE9/1/

答案 1 :(得分:1)

如果我理解正确,您希望在element_aelement_b(包括)之间的所有元素周围放置一个范围。

一旦你弄清楚如何将所有这些元素放到一个jQuery对象中,.wrapAll() method可以很好地做到这一点,但这样的事情应该有效:

var $els = $(element_a);
$els = $els.add( els.nextUntil(element_b) ).add(element_b)

$els.wrapAll("<span class='wow' />");

这首先是一个仅包含element_a的jQuery对象,然后使用.add() method.nextUntil() method添加element_aelement_b之间的所有元素,最后加入element_b