2014-01-24 92 views
0

我有一個表格,我想分成三個不同的部分,每個部分都有一個「下一個」和「後退」按鈕,分別顯示下一個或上一個部分。大多數情況下,它是如何工作的,除了IE10 +。它適用於Firefox,Chrome和IE7(不確定大約8和9)。爲什麼這不能在IE10中工作,但在IE7中工作

不工作的代碼部分是:

$("#sell_body2").hide(); 
$("#sell_body3").hide(); 


$('#sell_next1').click(function() { 
    $("#sell_body1").fadeOut(250); 
    setTimeout('$("#sell_body2").fadeIn(250)', 250); 
}); 
$('#sell_next2').click(function() { 
    $("#sell_body2").fadeOut(250); 
    setTimeout('$("#sell_body3").fadeIn(250)', 250); 
}); 
$('#sell_back2').click(function() { 
    $("#sell_body2").fadeOut(250); 
    setTimeout('$("#sell_body1").fadeIn(250)', 250); 
}); 
$('#sell_back3').click(function() { 
    $("#sell_body3").fadeOut(250); 
    setTimeout('$("#sell_body2").fadeIn(250)', 250); 
}); 

這裏是的jsfiddle中的jsfiddle http://jsfiddle.net/PHYL2/ 它的工作原理正是我想要的,但在IE10 +當我點擊第一個「下一步」按鈕,目前部分淡出(就像它應該),但接下來在

注意永不褪色:請原諒可怕的樣子,我只張貼受到該問題影響

+0

對我的作品 –

+1

兼容模式?具有諷刺意味的是,沒有任何工作在兼容模式 – HackedByChinese

+0

我可能不得不從IE10 +中刪除「+」。其他人得到相同的結果嗎?如果沒有,那麼我將不得不更仔細地看看我的具體瀏覽器 – CumminUp07

回答

3

我的猜測是它的代碼是一個問題解密評估你的超時執行字符串。

,而不是設置超時,爲什麼不直接使用fadeOutcomplete callback,如

$('#sell_next1').on('click', function() { 
    $('#sell_body1').fadeOut(250, function() { 
     $('#sell_body2').fadeIn(250); 
    }); 
}); 

其實我走了一步,使這個更加通用。

說你的觸發要素是這個樣子......

<button id="sell_next1" class="next-btn" 
    data-target-out="#sell_body1" data-target-in="#sell_body2">Hide body1, show body2</button> 

然後,你可以寫一個通用處理器...在IE11

$('.next-btn').on('click', function(e) { 
    e.preventDefault(); 
    var $this = $(this), 
     in = $this.data('target-in'), 
     out = $this.data('target-out'); 
    $(out).fadeOut(250, function() { 
     $(in).fadeIn(250); 
    });    
}); 
+0

但是,我本來有它,但似乎下一個會在第一個變得難看之前開始褪色,但我可能會讓它設置錯誤。如果我無法弄清楚這一點,我可能會回去嘗試這種方式 – CumminUp07

+1

@ CumminUp07對於這個問題,試着看看'.stop'。 (http://api.jquery.com/stop/)。第二個參數告訴它「跳到結束」或完成動畫。當一個動畫開始時,你可以告訴其他人停下來。 –

+0

我知道必須有一個更簡單的方法。這在我所關心的所有瀏覽器中完全如此,並使我的代碼更加清潔 – CumminUp07

相關問題