2012-01-10 44 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

相關問題