據我所知,下面的代碼應該工作,創建一個<div>
元素,然後創建一個<p>
元素;該表達式應該導致一個帶有兩個元素的jQuery對象:jQuery之後的方法不與新創建的元素
$("<div>first element's content</div>").after("<p>second element's content</p>");
但是,我得到的是非常不同的。 The documentation(請參閱標題「插入斷開的DOM節點」)告訴我,上面的代碼應該產生一個jQuery對象,抓取這兩個HTML片段並構建兩個DOM元素。但是,我得到的,在幾個不同版本的jQuery中,都是1.4以上,是一個只有1個節點的jQuery對象。但是,下面的代碼工作得很好,回來(我相信這是)正確的jQuery對象,兩個元素裏面:
$("<div></div>").after("<p>second element's content</p>");
而這個例子中的作品,以及:
$("<div></div>").after("<p>second element's content</p>").after("<p>third element's content</p>");
看來.after()
方法工作正常,如果正在創建的第一個DOM節點是空的,但不是當它不是(不管隨後的DOM節點的內容被附加到它)。
我是否錯過了關於jQuery內部的東西,古怪的DOM問題和/或JavaScript的特性,或者這只是一個jQuery的bug從1.4版持續到1.7?
(Here's a meager JSFiddle演示該問題很清楚。)
正如下面的評論提到** ** elclanrs回答,'add'是一個可行的替代品,我已經颳起了[新的jsfiddle ](http://jsfiddle.net/paulbruno/beFUF/)來證明它的工作原理。然而,這並不能解釋爲什麼[docs](http://api.jquery.com/after/)(甚至它的評論,看到包含來自「MarkAndrewSlade」的答案的整個線程)上顯示的行爲isn'當元素有內容時,可用於新創建元素的jQuery對象的'after'方法。 –