为什么自定义jQuery对象的`.before`不起作用?

时间:2013-08-01 13:03:27

标签: javascript jquery html dom

我试过像这样的jQuery代码:

var a=$("<a>1</a>")
a=a.before("<b></b>")
a[0].outerHTML

结果仍然是<a>1</a>,我希望得到<b></b><a>1</a> ..似乎.before根本不起作用..

===

我知道如果a.before是DOM的一部分,a将会很好用。但是如果a没有插入DOM并且我需要在a之前插入一些东西(不包裹a),该怎么办?这就是我使用a=a.before("<b></b>")的原因。有没有人有关于如何在将jQuery对象插入DOM之前就地更改它的想法?

2 个答案:

答案 0 :(得分:1)

问题是a.before会返回原始集合,该集合仅包含a以及您在内部插入的内容,但不会在其之前(或之后或之后) 。尝试使用虚拟容器,按before更改prepend并阅读innerHTML而不是outerHTML

var a = $("<a>1</a>");
var x = $('<dummy/>').append(a);
x.prepend("<b></b>"); 
console.log(x[0].innerHTML);

答案 1 :(得分:-2)

您可以尝试使用与现有HTML元素相同的代码来代替“var a = $(”1“)”。我认为这应该完美无缺!