返回值:jQuerybefore(content, [content])
在每个匹配元素的前面,插入指定的内容,作为其兄弟节点。
-
1.0 新增before(content, [content])
content (String, Element, jQuery) 待插入的内容,可以是选择器, 元素, HTML 字符串, 或 jQuery 对象。待插入的内容将会被插入到每个匹配元素的前面。content (String, Element, Array, jQuery) 可选参数,可选参数,可选参数,表示将要插入到匹配元素前面的内容。可以是一个或多个附加的 DOM 元素, 元素数组, HTML 字符串, 或 jQuery 对象。 -
1.4 新增before(function)
function (Function) 一个函数,返回将要插入到匹配元素前面的 HTML 字符串, DOM 元素(或元素数组), 或 jQuery 对象。index 参数表示元素在匹配集合中的位置。在函数内,this 指定集合中的当前元素。
.before()
和
.insertBefore()
方法的功能是一样的。主要的区别在于语法指定(syntax-specifically)上,也就是说在调用方法时,选择的元素及指定的内容这两个参数的位置是不同的。对于 .before()
而言,选择器表达式写在方法的前面,待插入的内容会被插入到它的前面;将要被插入的内容作为方法的参数。而 .insertBefore()
正好相反,将要被插入的内容写在方法的前面(可以是选择器表达式或动态创建的标记),它会被插入到目标容器的前面。
例如,有如下的 HTML:
<div class="container"> <h2>Greetings</h2> <div class="inner">Hello</div> <div class="inner">Goodbye</div> </div>
可以一次性将需要插入的内容,插入到多个元素的前面:
$('.inner').before('<p>Test</p>');
其结果是,每个含有 inner 样式的 <div>
的前面,都被插入了新的内容:
<div class="container"> <h2>Greetings</h2> <p>Test</p> <div class="inner">Hello</div> <p>Test</p> <div class="inner">Goodbye</div> </div>
也可以选择页面上的元素,并将其插入到另外元素的前页:
$('.container').before($('h2'));
通过这种方法将页面上选择的元素插入到其它地方,实际上是将原来的元素移动到新的位置,而不是将克隆后的元素插入到新的位置:
<h2>Greetings</h2> <div class="container"> <div class="inner">Hello</div> <div class="inner">Goodbye</div> </div>
然而,如果目标元素(即被当成容器的元素)不只一个,那么会将克隆后的插入元素,插入到每个目标元素的前面。
从 jQuery 1.4 开始, .before()
和 .after()
可以在断开的 DOM 节点(disconnected DOM nodes,即,只有结束标签的元素)上使用:
$("<div/>").before("<p></p>");
结果是 jQuery 集合中含有一个段落,在其后还有一个 div。
额外的参数
和其它可添加内容的方法类似,例如
.prepend()
和
.after()
, .before()
同样可以将多个内容作为参数。支持的内容包括 DOM 元素, jQuery 对象, HTML 字符串, 和 DOM 元素数组。
例如,下面的代码会在第一个段落前插入两个新的 <div>
和一个已经存在的 <div>
:
var $newdiv1 = $('<div id="object1"/>'), newdiv2 = document.createElement('div'), existingdiv1 = document.getElementById('foo'); $('p').first().before($newdiv1, [newdiv2, existingdiv1]);
因为 .before()
可以接收多个额外的参数,所以上面的例子中,也可以将三个独立的 <div>
分别作为参数传给该方法,就像这样: $('p').first().before($newdiv1, newdiv2, existingdiv1)
。参数的类型和数量,将在很大程度上取决于你是如何选择元素的。
示例:
在所有的段落前,追加一些 HTML。
<!DOCTYPE html>
<html>
<head>
<style>p { background:yellow; }</style>
<script src="jquery.min.js"></script>
</head>
<body>
<p> is what I said...</p>
<script>
$("p").before("<b>Hello</b>");
</script>
</body>
</html>
演示:
示例:
在所有的段落前,追加一个元素。
<!DOCTYPE html>
<html>
<head>
<style>p { background:yellow; }</style>
<script src="jquery.min.js"></script>
</head>
<body>
<p> is what I said...</p>
<script>
$("p").before( document.createTextNode("Hello") );
</script>
</body>
</html>
演示:
示例:
在所有的段落前,追加一个 jQuery 对象(类似于一个 DOM 元素数组)。
<!DOCTYPE html>
<html>
<head>
<style>p { background:yellow; }</style>
<script src="jquery.min.js"></script>
</head>
<body>
<p> is what I said...</p><b>Hello</b>
<script>
$("p").before( $("b") );
</script>
</body>
</html>