1

嘿,真的很难为我的问题定义一个确切的标题。

我在 2008 年到 2012 年之间使用 jQuery Accordions。这些手风琴里面是带有超链接的日期。如果您按下任何链接,将跟随一个 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 年的一个链接,然后转到 2011 单击该链接并返回 2012。应该没有图片库。插入 alert() 以显示哪个 div id 设置为 temp 并显示正确的 id。但是淡出在关闭的手风琴选项卡中不起作用。

编辑:所以似乎我无法对关闭的 Accordion 选项卡中的内容进行任何更改

4

2 回答 2

0

编辑:您必须在选项卡单击时隐藏每个可见图库。添加class="mygallery"到画廊容器。

在选项卡上单击$('.mygallery').hide();以隐藏所有画廊,然后您可以在单击的选项卡内显示一个

于 2012-06-12T23:24:18.673 回答
0

修复了这个问题。添加了以下代码:

$("#media_accordion").accordion({
    autoHeight: false,
    navigation: true,
    //Everytime a new tab is clicked hide previous div container    
    change: function(event, ui) {
        $("#" + tempDiv).hide();
    }
}); 
于 2012-06-14T01:19:41.433 回答