2017-10-09 7 views
0

これはクリックの問題か、jQueryフェード関数特有のものかわかりません。jQuery - IE fadeIn()、すぐにfadeOut()を発行します。

私はこのようなHTMLの構造を有する:label > input(hidden) + div + label text

例を次のように

<label data-name="primary-residence" data-value="Yes"> 
    <input type="hidden" id="primary-residence" name="Primary Residence" value="" /> 
    <div class="big-check-box"></div> 
    Primary Residence 
</label> 

とjQueryは、次のとおりです。

$('label').on('click', function(){ 
    var name = $(this).data('name'); 
    var value = $(this).data('value'); 
    if($(this).find('.big-check-box').hasClass('checked')){ 
     $(this).find('.big-check-box').removeClass('checked'); 
     $('#'+name).val(''); 
     $('#'+name+'-value, #'+name+'-loan-balance').fadeOut(); 
    }else{ 
     $('#'+name).val(value); 
     $(this).find('.big-check-box').addClass('checked'); 
     $('#'+name+'-value, #'+name+'-loan-balance').fadeIn(); 
    } 
}); 

私はbig-boxを持っているチェックボックスとして機能しているとフォームの提出時に収集する隠しフィールドにデータ属性を設定します。また、クラスをチェックボックスに適用し、2つの新しい入力フィールドをフェードインします。

ChromeやFFではすべてうまく動作しますが、IEではクラスがボックスに適用されず、新しい入力フィールドがフェードインし、フェードインアニメーションが完了するとすぐにフェードアウトします。クリックが2回行われない限り、それはうまくいくように見えますが、それはあまり直感的ではなく、使いやすいものでもありません。ここで

は、実施例にフィドルです:なぜこれが起こっているjsFiddle

誰もが知っていますか?

答えて

0

私はそれを理解しました。

何らかの理由で私はpreventDefault()をIEの修正に追加する必要がありました。ない正確にそれが動作する理由が、ここに参照です:

$('label').on('click', function(e){ 
    e.preventDefault(); 
    ..... 
}); 

希望これは、将来的に他の誰かを助けることができる:<label> - HTML | MDN

はここで更新行があります。

関連する問題