2010-12-28 15 views
0

私はこの1つにあまりにも空想を取得しようとしている可能性があります。jQueryクリッククラスの変更IEの奇妙な

私は、ラジオのようなボタンのペアをバックグラウンドイメージとの間に区切り線が並んでいます。ボタンの1つがクリックされると、そのクラスが変更されます。仕切り用のCSSは、いずれかの側のボタンのクラスにキーイングされ、背景画像を選択します。私はCSSの兄弟セレクタでこれをやっています。

jQuery .clickイベントは 'buttons'に関連付けられています。彼らが最初に行うことは、他のボタンから「選択された」クラスをクリアし、クリックされたボタンにそれを設定することです。

たとえば、LEFTボタンクラスが「選択済み」で右ボタンが選択されていない場合、それらの間の仕切りは青い背景になります。右ボタンをクリックすると、LEFTボタンのクラスがクリアされている間にclass = 'selected'になります。仕切りが赤く変わります。

これはIE、FF、Safariなどで機能しますが、IEは奇妙です(IE7) - クリックしたボタンをマウスでオフにすると、ディバイダの背景の変更のみが反映されます。つまり、この例では、右ボタンがclass = 'selected'になり、クリック時にすぐに変更されます。しかし、私がボタンから離すまで分周器は青色のままで、赤色に変わります。

クラス自体が変更されているため、結果としてボタンの外観が変化します。それは唯一の隣接するものではありません!

これは、WindowsでUIを変更するために定期的にDoEventsを呼び出す必要があるときの私の古いVB6のことを思い出させます。ここにIEに似たものがありますか?

答えて

1

これはなぜ役立つのかわかりませんが、クラスを変更したものを含むセレクタに.hide()。show()を追加すると、更新されているようです。

1

setAttributeを使用してクラスを変更すると、IE7でスタイルを再レンダリングすることになります。 HTMLや身体タグを与えるよう

if ($("html").hasClass("ie7")){ 
    var tempHolder = $("#ajaxresults").html(); 
    $("#ajaxresults").html(tempHolder); 
} 

:私は再レンダリング(jqueryのを使用して)するIE7を余儀なくされ、HTMLを書き換えることにより同様のIE7の問題を解決してきた、それを試してみて、そしてそれはまだ失敗した場合ie7クラス、html5boilerplate.comを見てみることをお勧めします。何らかの理由でソリューションを使用できない場合、jqueryは次のようになります。

if ($.browser.msie){ 
     if ($.browser.version < 8){ 
      $("html").addClass("ie ie7"); 
     } 
     else { 
      $("html").addClass("ie"); 
     } 
    } 
関連する問題