代码之家  ›  专栏  ›  技术社区  ›  mattdlong

internet explorer中的jQuery.slideUp().slideToggle()会产生与预期相反的效果

  •  1
  • mattdlong  · 技术社区  · 15 年前

    我使用.slideUp()和.slideToggle根据单选按钮集合中选择的值显示和隐藏两个div。

    这是我的Javascript

        function TogglePaypal() {
            $("#bank").slideUp(250, function() {
                $("#paypal").slideToggle();
            });
        }
        function ToggleBank() {
            $("#paypal").slideUp(250, function() {
                $("#bank").slideToggle();
            });
        }
    

    下面是我在HTML中所做的工作,

     <%=Html.RadioButton("PaymentMethod", "PayPal", true, new { onchange = "TogglePaypal();" })%>
    
    <label class="payment-radio">PayPal</label>
    
    <%=Html.RadioButton("PaymentMethod", "Bank Account", false, new { onchange = "ToggleBank();" })%>
    
    <label class="payment-radio">Bank Account</label>
    
    <div id='paypal'></div>
    <div id='bank' style="display: none"> </div>
    

    我所期望的(实际上在firefox、chrome和safari中发生的事情)是,最初选中paypal单选按钮并显示paypal div,当选中bank单选按钮时,paypal div向上滑动,bank div向下滑动(反之亦然)。

    internet explorer中发生的事情是,最初选择了paypal按钮,并且显示了paypal div,但是当我选择bank单选按钮时,什么也没有发生,然后当我单击back to paypal按钮时,paypal div向上滑动,bank div向下滑动,从那以后,我将显示与所选内容相反的div。

    任何想法都将不胜感激。

    2 回复  |  直到 15 年前
        1
  •  1
  •   mattdlong    15 年前

    好的,我通过将所有幻灯片调用更改为.slideToggle()来解决这个问题;

        function ToggleBank() {
            $("#paypal").slideToggle();
            $("#bank").slideToggle();
        }
    
        2
  •  0
  •   patmortech    15 年前

    我认为这是因为IE在焦点离开单选按钮后才在单选按钮上注册更改事件。(即,当您单击Paypal按钮时,它会注册银行选项的更改事件,因为它失去了焦点)。