私はこれと非常によく似た問題から始めました: Jquery : 新しいコンテンツが異なる場合にのみコンテンツを置換します
受け入れられている解決策を試しましたが、想定どおりに機能しないようです。私は最初にネイティブソリューションを試し、div のものを入れました。次に、jQuery のサイトhttp://api.jquery.com/data/で関数を検索して、最後の例に従ってコードを修正しました。正確に何が起こっているかを確認するためにデータにアラートを出そうとしましたが、かなりの量のデータであるため、すべてを MD5 ハッシュしました。
私の問題は、最初のアラートが未定義で戻ってきて、2 番目のアラートが実際には定義済みであるということです。私は何か間違ったことをしていますか?この保存されたデータが消える原因は何ですか?
私の現在のコード:
function setDiv(data) {
newData = md5(data);
if ($('#myDiv1').data('oldData') != newData) {
$('#myDiv1').fadeTo("fast", 0, function () {$(this).html(data).fadeTo("fast", 1)});
alert($('#myDiv1').data('oldData'))
$('#myDiv1').data('oldData',md5(data));
alert($('#myDiv1').data('oldData'))
}
}
そして私のスクリプトヘッダー(2番目のものはmd5関数用です):
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://www.myersdaily.org/joseph/javascript/md5.js"></script>
すべての意図と目的のために、関数に供給されるデータは正しいです...とにかく、私が見ることができたものです。設定後も機能します。しかし、私は setTimeout がそれを行うたびにそれを更新したくないだけでなく、BAM だけでなく、物事がフェードアウトしてフェードインするのが好きです。
現在のコードでは、データは同じですが、フェード インとフェード アウトだけです。そして明らかに、開始時に undefined 、終了時に md5 という警告が表示されます。毎回終了時に同じ md5 なので、間違いなく同じデータです。しかし、最初のアラートが未定義であることが問題です。
上記の関数にデータを送信する関数:
function loadDivContent(arg1,arg2) {
$.post('divContent.php',{arg1:arg1,arg2:arg2})
.done(function(data) {
setDiv(data)
});
}