2012-01-10 60 views
2

我有这样的jQuery为什么IE需要我点击两次

$('.billing_info').click(function(e){ 
     e.preventDefault(); 
     if(($('.shipping_selection').length) > 0){ 
      if ($('.shipping_selection:checked').length == 0){ 
       $('.hide_error').show(); 
       $("html, body").animate({ scrollTop: $(".hide_error").offset().top }, "slow"); 
       $(".hide_error").effect("highlight", {}, 4000); 
       return false; 
      }else{ 
       $('.billing_info').unbind("click"); 
       $('.billing_info').click(); 
      } 
     }else{ 
      $('.billing_info').unbind("click"); 
      $('.billing_info').click(); 
     } 
    }); 

其中除了在IE中的所有浏览器真棒。我使用的是IE8,用户需要点击按钮两次以接受点击事件,即使有一个单选按钮$('。shipping_selection')点击

+0

您可以调试它并查看每次点击所做的IE吗?事件处理程序是否会触发两次?点击是否被网页上的其他元素捕获? – Rup 2012-01-10 01:09:24

+0

是否有我可以使用的萤火虫类型的工具,我可以做console.log – Trace 2012-01-10 01:10:43

+1

什么是.billing_info一个''?添加您的HTML,以便我们可以得到完整的图片。 – 2012-01-10 01:11:13

回答

1

也许有点重构会有所帮助。只在需要时防止默认,否则让函数通过默认的提交事件。

$('.billing_info').click(function(e){ 
    if(($('.shipping_selection').length) > 0 && $('.shipping_selection:checked').length == 0){ 
      e.preventDefault(); 
      $('.hide_error').show(); 
      $("html, body").animate({ scrollTop: $(".hide_error").offset().top }, "slow"); 
      $(".hide_error").effect("highlight", {}, 4000); 
      return false; 
    } 
}); 
+0

那伎俩....真棒谢谢 – Trace 2012-01-10 01:57:17

相关问题