2

给定两个有序但不一定是顺序的兄弟元素,我如何将 html 包裹在它们周围?

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

以上不起作用,因为它为我关闭了开始标签,并且不插入后者。

(兄弟姐妹是各种各样的类型和类,所以使用 slice 来帮助完成这项任务很困难,但也许我还没有考虑清楚。)

4

2 回答 2

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/

于 2012-05-23T03:55:12.803 回答
1

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

一旦您弄清楚如何将所有这些元素放入单个 jQuery 对象中,该.wrapAll()方法就可以很好地做到这一点,但是这样的事情应该可以工作:

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

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

这从一个包含 just 的 jQuery 对象开始element_a,然后使用.add()方法.nextUntil()方法element_a添加和之间的所有元素element_b,最后添加 in element_b

于 2012-05-23T04:07:05.373 回答