.replace()在IE7中不起作用

时间:2011-07-06 19:38:42

标签: jquery internet-explorer-7

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 :(得分:0)

嗯,这很奇怪。你能尝试一下:

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

如果这不起作用,则问题与.replace()无关,而与您的this元素无关。

希望这会有所帮助。干杯

答案 1 :(得分:0)

这是我在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>

答案 2 :(得分:0)

嘿,他找到了解决这个问题的更好方法。我只是使用了文本的第一个字母,而不是试图替换白色空格。更简单的解决方案。

感谢您的帮助。