あなたは私はあなたが(この場合、またはオブジェクト)ストアに一度変数内のデータを、それを行うロードするために必要なすべてのデータをループを実行しますAJAXを使用する必要がある場合
イベントはすでに入力されているtabDataからIDを取得し、ajaxページを再度呼び出す必要はありません。あなたがインスタントしたいページを開いたときに、AJAX成功にif文を作成した最初の選択したタブを取り込む場合は、このシナリオ
のためにそれを必要としないので
は今、これはあなたのキャッシュの問題を解決します
最終結果は、これらの線に沿って何かになります:
$(document).ready(function() {
//data for the tabs
var tabs = {
1:"tabone",
2:"tabtwo",
3:"tabthree"
}
//empty object for now will be filled with ajax data
var tabData = {};
var activeTabVal=1;
var activeTabID = $('input[name=tabs]:checked', ".tabs").attr('id');
for(key in tabs) {
ajaxCall(key);
}
$('.tabs input').on('change', function() {
var activeTab=$('input[type="radio"]:checked', '.tabs').val();
var tabElement = $('input[name=tabs]:checked', ".tabs").attr('id');
//since we have the data already no need to call ajax here we just get it out of our already loaded data
var data = tabData[activeTab];
replaceData(tabElement, data);
});
function ajaxCall(key){
$.ajax({
type: "POST",
dataType: 'jsonp',
url: 'https://jsonplaceholder.typicode.com/posts/'+key,
async: false,
cache: true,
contentType: "application/json; charset=utf-8",
success: function (msg) {
tabData[key] = msg.body;
//use this to imediatly populate the selected div fo your second point
if(key == activeTabVal) {
replaceData(tabs[key], tabData[key]);
}
}
});
}
function replaceData(tabElement, tabData) {
$('#'+tabElement).next().next().closest('div').append(tabData);
}
});
コンテンツはあなただけjavascriptの変数に直接保存することができます変更するつもりされていない場合、私はすべてでAJAXを使用していない検討します。そのタブの関連データに置かれたクリックされたタブよりも – herriekrekel
提案していただきありがとうございます。変数を使ってキャッシュの問題を処理できると思います。しかし、まだ私はajaxキャッシュを使用することについて不思議です。また、他の質問の答え。 – linepisode