5

ご覧ください: http://jsfiddle.net/s6VdW/

HTML:

<div id="test"></div>

JS:

var span1 = $("<span/>").text("Hello");
var br = $("<br/>");
var span2 = $("<span/>").text("World!");
span1.after(br).after(span2);

$("#test").append(span1);

期待される結果は次のとおりです。

Hello
World

HTML として期待される結果は次のとおりです。

<div>
    <span>Hello</span>
    <br/>
    <span>World</span>
</div>

エラーは何ですか?jQuery ドキュメント ( http://api.jquery.com/after/ ) によると、次のことが可能になるはずです。

.after()切断された DOM ノードでも機能します。

そのセットは、ドキュメントに挿入する前であっても、さらに操作できます。

アップデート

を使用する前に、最初のスパンを最初に DOM に追加する必要があるよう.after()です。しかし、代替手段は何ですか?コードの DOM 非認識部分にいるなどの理由で、DOM にアクセスできない場合はどうすればよいですか? http://jsfiddle.net/s6VdW/10/

更新 2

要素を追加する「一時的な」div を作成できます。次に、その div の子を返します。デモ: http://jsfiddle.net/s6VdW/13/ - 進むべき道のように見えますか?

4

5 に答える 5

1

HTML を動的に作成しているため、最初に append() を呼び出してから after() を呼び出す必要があります。

あなたはのようにしようとする必要があります

<div id="test"></div>

JS

var span1 = $("<span/>").text("Hello");
var br = $("<br/>");
var span2 = $("<span/>").text("World!");
$("#test").append(span1);
span1.after(span2).after(br);

要素を追加する順序は左から右にする必要があります

デモ

于 2013-03-13T10:21:25.933 に答える
1

これを試してください:

var span1 = $("<span/>").text("Hello");
var br = $("<br/>");
var span2 = $("<span/>").text("World!");

$("div").append(span1);
span1.after(br);
br.after(span2);

.after()最初に追加するときに行いますspan1

フィドル

于 2013-03-13T10:22:32.133 に答える
1

.after()問題は、そのスパン要素を作成する前に使用すると同時に、span1 を動的に作成することです。この行では、適用する要素をspan1.after(br).after(span2);検索しますが、その要素はありません。なぜ使用する必要があるのか​​ を明確に理解している場合は、ここで類似点があります. あなたのコードは次のようになりますspan1.after().ready()

var span1 = $("<span/>").text("Hello");
var br = $("<br/>");
var span2 = $("<span/>").text("World!");

$("#test").append(span1);
span1.after(span2).after(br);

.after()また、要素を左から右に追加することを覚えておいてください。結果が1 から 9になるように、 9 から 1.after()の順序で使用する必要があります。

あなたが答えを得たことを願っています。:)

于 2013-03-13T10:32:12.230 に答える
0

after メソッドを使用する場合は、次のようなものを試すことができます。

// Initialize jQuery objects
var span1 = $("<span/>").text("Hello");
var br = $("<br/>");
var span2 = $("<span/>").text("World!");

// First step : Add the first element to your div
$("div").append(span1);
// Second step : Add the differents elements with the add method (note that I inversed the order to work fine because the after is applied to span1 and not to the last added element.
span1.after(span2).after(br);
于 2013-03-13T10:29:21.767 に答える
0

試す

var span1 = $("<span/>").text("Hello");
var br = $("<br/>");
var span2 = $("<span/>").text("World!");
span1.after(br);

$("#test").append(span1).append(span2);
于 2013-03-13T10:09:25.500 に答える