2012-04-23 2 views
2

私は2つの "ページ"を持っています(基本的に2つのdivタグ、一度に1つしか表示されません)。ユーザーがどの「ページ」にいるかに応じて、選択ボックスはページ1(スライダ)のjQuery UIダイアログに表示されるか、通常の選択ボックスとしてページ2に表示されます。私の質問は、insertAfter()を使って選択ボックスをあるページ/ divから別のページ/ divに移動できますか?それとも、もっと具体的には、私はすべきではない理由がありますか?私は、重複したIDを作成し、基本的に各選択ボックスのコピーを作成し、その値を同期しようとするとclone()関数を嫌ってしまったのですが、insertAfter()を使用しないのが正当な理由がない限り、ここで選択ボックスでjQueryのinsertAfter()を使用する際のパフォーマンス上の問題はありますか?

は、コードのモックアップだ場合には私の説明は明快さを欠いていた:

HTML:

<div id="page1"> 
     <select id="tango"> 
      <option>Jester</option> 
     </select> 
    </div> 

<div id="page2"> 
    <div id="dialog"> 
     <!-- Select Menu would be inserted/moved here --> 
    </div> 
</div> 

はJavaScript:

$('select#tango').insertAfter('#dialog'); 
+0

与え、なぜあなただ​​けの両方の場所での選択を含めていない、(私が正しくあなたの質問を理解すると仮定)がありますあなたはすでにdivを表示/非表示にしていますか?選択が変更されますか? – Colleen

+0

@ $( 'select#tango')); – mgraph

+0

@Colleen、いいえ、たくさんの選択肢があり、ちょうど巨大です。さらに、前後に動かす方が簡単ですし、2つの間で値を同期させるよりも少ないコードを使用します。好奇心から外へ – servarevitas3

答えて

2

が実際につながる:

<div id="page2"> 
    <div id="dialog"> 

    </div> 
    <!-- Select Menu would be inserted/moved here --> 
</div> 

私はあなたがなりたい場所、あなたが本当にそれが置かれているしたいと思い何を思う:

$('select#tango').appendTo('#dialog'); 
+0

明日は二重チェックをしなければなりませんが、そのようなinsertAfter()を使ったときにはうまくいきました。私の質問は、「これは悪い考えか悪い副作用ですか」よりも「これは効く」よりもました。アドバイスをいただき、ありがとうございます。私は明日その方法を間違いなく試みます。 – servarevitas3

+0

私のアプリケーションでinsertAfterが動作するように見えたが、appendTo()が私が今使っているもの(実際は.clone()。appendTo())です。 – servarevitas3

1

私の質問があり、私がすることができますinsertAfter()を使用して、選択ボックスを から1ページ/ divに移動しますか?または、具体的には、何か理由がありますか? はすべきではありませんか?

いいえ、あなたはこれを行うことはできません。理由はありません。 $('select#tango').insertAfter('#dialog');スクリプトを使用して

1

それと間違って何もありません。ここで働いてデモhttp://jsfiddle.net/pomeh/FA23E/

HTMLコード

<div id="page1"> 
    <select> 
     <option>A</option> 
     <option>B</option> 
     <option>C</option> 
    </select> 
</div> 

<div id="page2"> 
    <div id="dialog"> 
     <!-- Select Menu would be inserted/moved here --> 
    </div> 
</div> 

<input type="button" value="Dance for me !" /> 

Javascriptコード

var clicks = 0, 
    $select = $("select"), 
    $targets = [ $("#dialog"), $("#page1") ]; 

$("input").on("click", function() { 
    var $target = $targets[ clicks++ % 2 ]; 

    $select.appendTo($target ); 
}); 
関連する問題