2

奇妙なものを見つけました。jQueryメソッドを使用して要素を別の要素に挿入するとhtml()、最初の要素がDOMから削除されます。要素を挿入してDOMに保持できるかどうか知りたいです。

次に例を示します。

$(document).ready(function(){
    select1 = $("#select-1");
    select2 = $("#select-2");
    $("#gap").html(select2); //Original select2 removed from DOM
});

ご覧のとおり、#select-2別の要素に挿入すると、その要素は表示されなくなります。しかし、私はそれを挿入し、以前のように元の要素を保持したいと思います。

4

5 に答える 5

4

私があなたの質問を正しく理解したと仮定すると、あなたcloneは要素をすることができます:

$(document).ready(function(){
    var select1 = $("#select-1"),
        select2 = $("#select-2");
    $("#gap").html(select2.clone());
});

バインドされたイベントハンドラーを保持する必要がある場合は、引数としてにselect2渡すことができます。trueclone

これが実際のです。


varちなみに、変数宣言の前にキーワードを追加したことに注意してください。これにより、変数がグローバルスコープにリークするのを防ぎます(通常は必要ありません)。


別の補足として、この形式のhtmlメソッドはjQuery APIに文書化されていないようです(リストされ、 「HTMLの文字列」である必要がある.html( htmlString )と述べられています)。htmlString

ただし、jQueryソースでは、文字列、要素、またはjQueryオブジェクトを明確に使用できます。が文字列の場合 htmlString、ネイティブinnerHTMLプロパティが使用されます。そうでない場合は、append代わりに次の方法が使用されます。

if ( typeof value === "string" /* ... */ ) {
    //...
}
if ( elem ) {
    this.empty().append( value ); //In your case we end up here
}
于 2012-07-02T12:51:48.440 に答える
0

コードをこれに変更します

$(document).ready(function(){
    select1 = $("#select-1");
    select2 = $("#select-2");
    $("#gap").html(select2.html());
    select1.show();
});
于 2012-07-02T12:52:04.697 に答える
0

試す

$(document).ready(function(){
    select1 = $("#select-1");
    select2 = $("#select-2").html();
    $("#gap").html(select2);
    select1.show();
});
于 2012-07-02T12:52:12.610 に答える
0

var select2 = $("#select-2");

コンテンツだけでなく、DOM要素を直接参照しているのです。そのため、要素を複製する代わりに移動します。

後者を行うには、次のように記述します。

$("#gap").html(select2.clone());

また

$("#gap").html(select2.html());

また

var select2 = $("#select-2").html();
$("#gap").html(select2);
于 2012-07-02T12:54:39.343 に答える
0

実際、これを行うにはいくつかのコマンドがあります。私は通常、insertAfter()、insertBefore()、before()、after()、append()、appendTo()、prepend()、prependTo()を使用します。

それを使用する一般的な方法: html

<div id="somediv">
    some content
</div>

JS

$(document).ready(function(){
  $("<span/>").html("this is what I'm appending").appendTo("#somediv");
});

ここでは、既存のdivブロックにspaninline-block要素を追加しました。他の機能も同様です。ドキュメントをお読みください。

オリジナルを保持したい場合は、次のように前にクローンを使用してください。

$(document).ready(function(){
  var theclone = $("#select-2").clone();
  theclone.appendTo("#gap");
});

もちろん、これを行うにはいくつかの方法がありますが、これで仕事は完了すると思います。変更した例は次のとおりです:http://jsfiddle.net/9PAYd/

于 2012-07-02T12:57:50.340 に答える