私の問題に正確なタイトルを定義するのは本当に難しいです。
私は 2008 年から 2012 年の間で jQuery アコーディオンを使用しています。これらのアコーディオンの内部には、ハイパーリンク付きの日付があります。リンクを押すと、ajax get 呼び出しが続き、結果が div コンテナーに追加されます。
次のリンクをクリックすると、前のリンクがフェードアウトし、新しい div がフェードインします。
2012 年と 2011 年の間に変更した場合を除いて、すべてが魅力的に機能します。その後、2012 年に最後に開いた div コンテナーはフェードアウトしません。
これは私のJSコードです:
var tempDiv = '';
//Auswahl Jahr zum Anzeigen von Presseartikeln
$("#select_media").live("click", function() {
var currentPos = $(this).data("pos");
var currentDiv = $(this).data("div");
alert(tempDiv);
$("#" + tempDiv).fadeOut();
tempDiv = currentDiv;
$.ajax({
url: 'edit.php?action=media_select&pos=' + currentPos,
type: 'GET',
dataType: 'html',
success: function (select) {
$("#" + currentDiv).html(select);
$('#myGallery').galleryView();
$("#" + currentDiv).fadeIn();
}
});
return false;
});
media_select のソースコードは重要ではありません。知っておく必要があるのは、応答として画像でいっぱいの順序付けられていないリストがあることだけです。
これは私のアコーディオンコードです:
$date = getdate();
$year = $date['year'];
for ($i=$year; $i>=2008; $i--) {
$getID = array();
$getDate = array();
$getTitle = array();
$string = array();
echo '<h3><a href="#" class="media_year_click">'.$i.'</a></h3>
<div>';
$sql = "SELECT
ID,
DATE_FORMAT(Date, '%d.%m.%Y') AS Date_media,
Title
FROM
Media
WHERE
YEAR(Date) = '".mysqli_real_escape_string($db, $i)."'
ORDER BY
Date ASC
";
if (!$result = $db->query($sql)) {
echo 'Datenbankfehler\n';
echo $db->error;
}
$j = 0;
while ($row = $result->fetch_assoc()) {
$getID[$j] = $row['ID'];
$getDate[$j] = $row['Date_media'];
$getTitle[$j] = $row['Title'];
$j++;
}
$result->close();
//Ausgabe
if (count($getID) == '0') {
echo 'Kein Eintrag vorhanden';
} else {
echo '<ul id="media_no_point">';
for($k = 0; $k < count($getID); $k++) {
$unique_id = '';
$string = explode(".", $getDate[$k]);
//Fix wenn Datum Tag 0 am Anfang enthält (wird nicht korrekt an JS übergeben)
//05032012 = 5032012 in JS
if ($string[0] < 10) {
$string[0] = mb_substr($string[0], 1);
$unique_id .= $string[0];
} else $unique_id .= $string[0];
$unique_id .= $string[1];
$unique_id .= $string[2];
echo '<li><a href="#" data-pos="'.$getID[$k].'" data-div="'.$unique_id.'" id="select_media">'.$getDate[$k].' - '.$getTitle[$k].'</a>
<div id="'.$unique_id.'" class="pictures"></div></li>';
}
echo '</ul>';
}
echo '</div>';
}
意味がわからない場合は、私のサイトにアクセスして2012 年に 1 つのリンクをクリックしてから、2011 年に移動し、リンクをクリックして 2012 年に戻ります。画像ギャラリーはありません。alert() を挿入して、temp として設定されている div id と正しい id を表示するようにしました。しかし、閉じたアコーディオンタブではフェードアウトが機能しません。
編集:閉じたアコーディオンタブでコンテンツの変更を受け入れることができないようです