Divs 位于另一个内,当在 Jquery 和 IE8 的外部 div 中使用 .slideDown() 时显示

发布于 2024-10-13 17:44:53 字数 1123 浏览 4 评论 0原文

上面的代码在所有浏览器中都可以正常运行,但 IE8 除外,它只能在兼容模式下运行。我删除了 DIV 内的所有标记,那里有巨大的表格。 在IE8中,当我选中复选框('rf')时,它应该只显示两个DIVS(#frmRF和#frmAntenas),但它也显示DIV(#frmTX),如果你认为标记不好,它是由 Zend_Form 生成的,我不想为我创建的每个复选框隐藏一个。

 <script>
$('input[name="rf"]').change(function(){
    if($(this).is(':checked')){
        $("#frmRF").show();
        $("#frmAntenas").slideDown();
    }else{
        $("#frmRF").slideUp('slow');
        if(!$('input[name="tx"]').is(':checked'))
            $("#frmAntenas").slideUp('slow');
    }
});
</script>

<TABLE>
<TR>
    <TD>
        <INPUT value=0 type=hidden name=rf ><INPUT id=rf value=1 type=checkbox name=rf> <FONT class=legenda>RF</FONT>
    </TD>
</TR>
</TABLE>

<div id=frmAntenas style="display:none;">
<fieldset> 
<legend>Especificações Técnicas da Solicitante:</legend>

    <div style='margin-top: 10px' id='frmRF' style="display:none;">

    </div>

    <div style='margin-top: 10px' id='frmTX' style="display:none;">

    </div>

</fieldset> 
</div>

The above code works well in all browsers except in IE8 where it only works in compatibility-mode. I removed all the markup inside the DIVs, there where huge TABLEs.
In IE8 when I check the checkbox('rf'), it is suposed to show only two DIVS(#frmRF and #frmAntenas), but it's also showing the DIV(#frmTX), if you think the markup is not ok, it was generated by Zend_Form, I'd like to not have a hidden for each checkbox I create.

 <script>
$('input[name="rf"]').change(function(){
    if($(this).is(':checked')){
        $("#frmRF").show();
        $("#frmAntenas").slideDown();
    }else{
        $("#frmRF").slideUp('slow');
        if(!$('input[name="tx"]').is(':checked'))
            $("#frmAntenas").slideUp('slow');
    }
});
</script>

<TABLE>
<TR>
    <TD>
        <INPUT value=0 type=hidden name=rf ><INPUT id=rf value=1 type=checkbox name=rf> <FONT class=legenda>RF</FONT>
    </TD>
</TR>
</TABLE>

<div id=frmAntenas style="display:none;">
<fieldset> 
<legend>Especificações Técnicas da Solicitante:</legend>

    <div style='margin-top: 10px' id='frmRF' style="display:none;">

    </div>

    <div style='margin-top: 10px' id='frmTX' style="display:none;">

    </div>

</fieldset> 
</div>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

长安忆 2024-10-20 17:44:53

首先抱歉,我不知道如何发表评论,也没有看到任何评论按钮。
我想我已经有一段时间遇到类似的问题了,我已经关闭了 IE 的幻灯片。我认为这只是 IE 处理不好的事情..
所以我认为你应该尝试这个,看看它是否有效:

   <script>
    $('input[name="rf"]').change(function(){
    var speed  = $.browser.msie ? 0 : "slow";
        if($(this).is(':checked')){
            $("#frmRF").show();
            $("#frmAntenas").show(speed);
        }else{
            $("#frmRF").hide(speed);
            if(!$('input[name="tx"]').is(':checked'))
                $("#frmAntenas").hide(speed);
        }
    });
    </script>

我相信向上/向下滑动与显示和隐藏内容相同(“慢”),所以我对此进行了调整。

Lauw

编辑:

当我把它放到网上并将你的 HTML 更改为以下内容时,它对我有用:

<div id=frmAntenas style="display:none;">
<fieldset> 
<legend>Especificações Técnicas da Solicitante:</legend>

    <div id='frmRF' style="display:none; margin-top: 10px">

    </div>

    <div id='frmTX' style="display:none; margin-top: 10px">

    </div>

</fieldset> 
</div>

这里的事情是你在 div 上定义了两次“样式”,所以它没有捕捉到显示:none;
评论后编辑答案。
希望这能解决这个问题,

First of all sorry, I have no clue how to comment, don't see any button for it.
I think I've had a similar problem for a while and I have turned off slidedown for IE. I think this is just something IE doesn't handle too well..
So I think you should try this and see if it works:

   <script>
    $('input[name="rf"]').change(function(){
    var speed  = $.browser.msie ? 0 : "slow";
        if($(this).is(':checked')){
            $("#frmRF").show();
            $("#frmAntenas").show(speed);
        }else{
            $("#frmRF").hide(speed);
            if(!$('input[name="tx"]').is(':checked'))
                $("#frmAntenas").hide(speed);
        }
    });
    </script>

I believe slideup/down does the same as showing and hiding stuff ("slow"), so i adjusted that.

Lauw

Edit:

It worked for me when I put it online and changed your HTML to the following:

<div id=frmAntenas style="display:none;">
<fieldset> 
<legend>Especificações Técnicas da Solicitante:</legend>

    <div id='frmRF' style="display:none; margin-top: 10px">

    </div>

    <div id='frmTX' style="display:none; margin-top: 10px">

    </div>

</fieldset> 
</div>

The thing here is that you were defining 'style' twice on the div, so it did not catch on to the display:none;
Editted answer after commenting.
Hope this solves it,

Lauw

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文