.replace () не работает в IE7 - PullRequest
1 голос
/ 06 июля 2011

Глобал replace() не работает в IE7, но работает в IE8. Это куча продуктов, которые я включаю и выключаю.

Если я удаляю .replace (), он работает в IE7.

Сценарий

$('li.prod').toggle(true);

$('li.prod:visible').each(function(i){

    i && ((i+1)%4 || $(this).addClass('prod-end'));

});

$('li.button').click(function (){

    $('li.button').removeClass('active');

    $(this).addClass('active');

$('li.prod').removeClass('prod-end');

if ( $('li#all').hasClass('active')) {

    $('li.prod').toggle(true);

    $('li.prod:visible').each(function(i){

            i && ((i+1)%4 || $(this).addClass('prod-end'));

        });

} else {

    $('li.prod').toggle(false);

    $('li.' + $(this).text().replace(/ /g, "-")).toggle(true);

        $('li.' + ($(this).text().replace(/ /g, "-")) + ':visible').each(function(i){

            i && ((i+1)%4 || $(this).addClass('prod-end'));

        });

}

});

HTML

<div class="subNav">
<ul>
<li class="button active" id="all">all</li>
<li class="button" id="swimming">swimming</li>
<li class="button" id="lawn">lawn games</li>
</ul>
</div>
<ul>
<li class="prod swimming"></li>
<li class="prod swimming"></li>
<li class="prod lawn-games"></li>
<li class="prod lawn-games"></li>
<li class="prod lawn-games"></li>
</ul>

Ответы [ 3 ]

0 голосов
/ 07 июля 2011

Это моя тестовая страница, которую я только что попробовал в IE8. Работает нормально. Он также отлично работает на FF5.

Не могли бы вы скопировать и протестировать?

Вы можете напрямую скопировать и вставить все это.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript">
        $(function () {
            $('li.prod').toggle(true);

            $('li.prod:visible').each(function (i) {
                i && ((i + 1) % 4 || $(this).addClass('prod-end'));
            });

            $('li.button').click(function () {
                $('li.button').removeClass('active');
                $(this).addClass('active');
                $('li.prod').removeClass('prod-end');

                if ($('li#all').hasClass('active')) {
                    $('li.prod').toggle(true);
                    $('li.prod:visible').each(function (i) {
                        i && ((i + 1) % 4 || $(this).addClass('prod-end'));
                    });
                }
                else {
                    $('li.prod').toggle(false);
                    $('li.' + $(this).text().replace(/ /g, "-")).toggle(true);
                    $('li.' + ($(this).text().replace(/ /g, "-")) + ':visible').each(function (i) {
                        i && ((i + 1) % 4 || $(this).addClass('prod-end'));
                    });
                }
            });
        });
    </script>
</head>
<body>
    <div class="subNav">
        <ul>
            <li class="button active" id="all">all</li>
            <li class="button" id="swimming">swimming</li>
            <li class="button" id="inflatables">inflatables</li>
        </ul>
    </div>
    <ul>
        <li class="prod swimming">swim1</li>
        <li class="prod swimming">swim2</li>
        <li class="prod inflatables">inf1</li>
        <li class="prod inflatables">inf2</li>
        <li class="prod inflatables">inf3</li>
    </ul>
</body>
</html>
0 голосов
/ 07 июля 2011

Эй, нашел лучший способ решить эту проблему.Я просто использовал первую букву текста вместо того, чтобы пытаться заменить пробелы.Более простое решение.

Спасибо за помощь.

0 голосов
/ 07 июля 2011

Ммм, это странно. Не могли бы вы попробовать:

$('li.' + $(this).text().replace(/\s/g, "-")).toggle(true);

Если это не работает, проблема связана не с .replace(), а с вашим элементом this.

Надеюсь, это поможет. Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...