为什么IE需要我点击两次

我有这个jQuery

$('.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’)点击

也许一点点重构会有所帮助。 只在需要时阻止默认,否则让函数传递给默认的提交事件。

 $('.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; } });