【やりたいこと】
1.「ボックスを追加」ボタンをクリックすると、jQueryで動的に要素を追加。(これはできています。)
2.追加した要素内の「↑ボックスを上に移動」をクリックすると、上下の要素が入れ替わる。
【陥っている状況】
・もともと設置してある「ボックスを追加」ボタンで、例えば3回増やした要素の、3番目の要素の「↑ボックスを上に移動」をクリックすると、3番目のものを2番目に移動したいのに、なぜか一番目に移動されてしまう。
【現在のコード】
<div id="sample"> <div class="add-box">ボックスを追加</div> </div> <script type="text/javascript"> $(function(){ var box_content = '<div class="box-wrapper">' + '<p class="box-up">↑ボックスを上に移動</p>' + '<input type="text" name="input[]">' + '<p class="add-box">+ボックスを追加する</p>' + '</div>'; // #sample内の.add-boxをクリックしたとき(動的に追加した要素内にもイベント効果を持たせるために、$(selector).on(event, target, function)の書き方) $('#sample').on('click','.add-box',function(){ // box_contentを追加 $(this).after(box_content); // .box-upが押された時の処理 $('.box-up').on('click',function(){ // 押された.box-upの親のbox要素を取得 var this_wrapper = $(this).closest('.box-wrapper'); // 上のbox要素を取得 var prev_wrapper = this_wrapper.prev('.box-wrapper'); // 移動 this_wrapper.insertBefore(prev_wrapper); }); }); }); </script>
【実現したときのイメージ】
<div id="sample"> <div class="add-box">ボックスを追加</div> </div> //「ボックスを追加」を押したとき動的に追加されたボックス1 <div class="box-wrapper"> <p class="box-up">↑ボックスを上に移動</p> <input type="text" name="input[]"> <p class="add-box">+ボックスを追加する</p> </div> //「ボックスを追加」を押したとき動的に追加されたボックス2 <div class="box-wrapper"> <p class="box-up">↑ボックスを上に移動</p> <input type="text" name="input[]"> <p class="add-box">+ボックスを追加する</p> </div> //「ボックスを追加」を押したとき動的に追加されたボックス3 <div class="box-wrapper"> <p class="box-up">↑ボックスを上に移動</p> <input type="text" name="input[]"> <p class="add-box">+ボックスを追加する</p> </div> 【実現したいこと】 動的に追加されたボックス3の、「↑ボックスを上に移動」を押すと、 並びが、「1」「3」「2」になるようにしたいです。 今は、「3」「1」「2」になります。
コードをどのように直せばよいかわからず、質問させていただきます。
お分かりになる方がいらっしゃいましたら、どうかご教授いただけましたら幸いです。
何卒、よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー