JQuery переключается неправильно в IE6 - PullRequest
0 голосов
/ 27 сентября 2011

У меня есть 3 деления, использующих функцию переключения JQuery для сворачивания делений:

enter image description here

В Firefox div хорошо рушатся, но в IE6 (целевой браузер) это происходит:

enter image description here

Если я изменю размер окна IE, элементы div снова выглядят нормально, как в Firefox.

Я попытался привести код к его простейшей форме:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<title>BIIS Portal</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="pragma" content="cache" />
<link rel="stylesheet" type="text/css" media="all" href="../assets/stylesheets/core-css.css" />
<script type="text/javascript" src="../assets/js/core-js.js"></script>
<!-- This script doesn't seem to work when put it in its own .js file... why? -->
<script type="text/javascript">
$(document).ready(function(){
    //Hide (collapse) the toggle containers on load
    $(".toggle-container").hide(); 

    //Show all containers with class toggle-opened
    //Remove the opened class
    //Find the trigger for the now opened container and apply the active class
    $(".toggle-opened").show().removeClass("toggle-opened").prev(".toggle-trigger").addClass("active");

    //Switch the Open and Close state per click then slide up/down (depending on open/close state)
    $(".toggle-trigger").click(function(){
        $(this).toggleClass("active").next().toggle();
        return false; //Prevent the browser jump to the link anchor
    });
});
</script>
</head>
<body>
    <div id="wrapper">
        <div id="header">
        </div>
        <div id="body">
            <div>
                <div class="portlet">
                    <div class="portlet-header">
                        <div class="portlet-title">
                        <h2>BI - External data Control</h2>
                        </div>
                    </div>
                    <div class="portlet-body">
                        <div>
                            <h3 class="toggle-trigger">External Data Configuration</h3>
                            <div class="toggle-container toggle-opened">
                                blah
                            </div>
                            <h3 class="toggle-trigger">Current Notifications</h3>
                            <div class="toggle-container toggle-opened">
                                blah
                            </div>
                            <h3 class="toggle-trigger">General Information</h3>
                            <div class="toggle-container toggle-opened">
                                blah
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>

ядро-css.css:

@import "base.css";
@import "framework.css";
@import "elastic.css";
@import "superfish.css";

@import "/application/css/jquery.autocomplete.css";
@import "/application/css/hspi-content-nav.css";
@import "/application/css/jquery-ui/jquery-ui-1.8.12.custom.css";

core-js.js - это всего лишь несколько минимизированных библиотек JQuery, а именно:

  • jQuery JavaScript Library v1.5.2
  • Плагин jQuery Cycle (с определениями переходов) Версия: 2.86 (05-APR-2010)
  • jQuery Cycle Plugin Определения перехода Версия: 2.72
  • jQuery UI 1.8.12
  • Виджет jQuery UI 1.8.12
  • jQuery UI Mouse 1.8.12

Я не слишком уверен, что происходит, потому что я в основном скопировал существующий код. Мне нужно, чтобы он работал правильно в IE, поэтому любые советы приветствуются.

Ответы [ 3 ]

0 голосов
/ 27 сентября 2011

Общей проблемой является то, что вещи просто не перерисовываются, как они должны быть.Если изменение размера окна или масштабирование страницы работают, это ошибка перерисовки, и, насколько я знаю, вы абсолютно ничего не можете с этим сделать в коде, кроме попыток найти какой-то другой способ кодирования, который работает.

0 голосов
/ 27 сентября 2011

@ Митч.Я думаю, что ваша главная проблема - это ваши стили CSS.Вы не предоставляете код CSS, но следующий пример работает в моих тестах в IE6-8 и FF7 (за исключением того, что IE6-7 не поддерживает стиль CSS content) http://jsfiddle.net/2YyXC/

HTML:

<div id="wrapper">
    <div id="header">
    </div>
    <div id="body">
        <div>
            <div class="portlet">
                <div class="portlet-header">
                    <div class="portlet-title">
                    <h2>BI - External data Control</h2>
                    </div>
                </div>
                <div class="portlet-body">
                    <div>
                        <h3 class="toggle-trigger toggle-trigger-active">External Data Configuration</h3>
                        <div class="toggle-container toggle-container-opened">
                            blah
                        </div>
                        <h3 class="toggle-trigger toggle-trigger-active">Current Notifications</h3>
                        <div class="toggle-container toggle-container-opened">
                            blah
                        </div>
                        <h3 class="toggle-trigger toggle-trigger-active">General Information</h3>
                        <div class="toggle-container toggle-container-opened">
                            blah
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

СЦЕНАРИЙ:

$(document).ready(function() {
    $(".toggle-trigger").click(function(){
        $(this).toggleClass("toggle-trigger-active").next().toggleClass("toggle-container-opened");
        return false; //Prevent the browser jump to the link anchor
    });
});

CSS:

.portlet {
    padding: 5px 5px 5px 5px;
    border: 1px solid black;
}

.portlet-body {
     padding: 5px 5px 5px 5px;
}

.portlet-title {
    background-color: black;
    color: white;
    font-family: Verdana;
    font-size: 13px;
    padding: 6px 6px 6px 6px;
}

.toggle-trigger {
    background-color: lightgrey;
    color: black;
    font-family: Verdana;
    font-size: 13px;
    padding: 6px 6px 6px 6px;
}

.toggle-trigger:before {
    content: "► ";
}

.toggle-trigger-active:before {
    content: "▼ ";
}

.toggle-container {
    font-family: Verdana;
    font-size: 13px;
    padding: 6px 6px 6px 6px;
    display: none;
}

.toggle-container-opened {
    display: block;
}
0 голосов
/ 27 сентября 2011

добавить условные комментарии для ie6 с .toggle-container и / или .toggle-closed (не уверен, что вы используете этот класс) display: none

...