やりたいことは特定のリンクをクリックするとそのクリックした要素の後ろに.afterなどを使ってDOM要素を作成し、そこにajaxで別ファイルのHTMLを読み込みしたいです。
下記のリンクを参考に作成しましたがうまくいきません。
クリックをトリガーに--ajaxで外部htmlを読み込んだり削除したりする
別のページをjqueryのajaxを使って読み込み表示させる
・問題点:
クリックした要素以外に追加したDOM要素を削除したいのですがうまくいかず、すべてのリンクの後にDOM要素が追加されてしまいます。
色々試してはみましたがうまくいかず困っています。。
すいませんがご教授いただければ幸いです。
どうぞよろしくお願いいたします。
HTML
1<div class="gnavi"> 2 <div class="item"><a href="modal_A.html">1のページ</a></div> 3 <div class="item"><a href="modal_B.html">2のページ</a></div> 4 <div class="item"><a href="modal_C.html">3のページ</a></div> 5</div>
jQuery
1$(function(){ 2 $(document).on('click', '.item a', function(event) { 3 event.preventDefault(); 4 var link = $(this).attr("href"); 5 $content = $('.pageDisplay'); 6 //リンク先が今と同じであれば遷移しない 7 if(link == lastpage){ 8 return false; 9 }else{ 10 if (!$(this).next('.pageDisplay').length>0){ 11 $(this).after("<div class=\"pageDisplay\"></div>"); 12 } 13 $content.fadeOut(300, function() { 14 $.ajax({ 15 type: 'GET', 16 url: link, 17 dataType: 'html', 18 success: function(data){ 19 $('.pageDisplay').html(data).fadeIn(300); 20 modalClose(); 21 }, 22 error:function() { 23 alert('問題がありました。'); 24 } 25 }); 26 }); 27 //今のリンク先を保存 28 lastpage = link; 29 } 30 31 }); 32 //初期設定 33 var lastpage = ""; 34 35 function modalClose() { 36 $(".js-modal_close").click(function() { 37 $content.fadeOut(300); 38 }); 39 };
});
回答2件
あなたの回答
tips
プレビュー