1

ポップアップボックスに:hover状態のボタンを作成しようとしています。ボタンのいずれかを使用すると、ボックスがDOMから削除され、将来の対話のために保存されます。問題は、IE9のDOMに再接続すると、次にホバーしてからマウスアウトするまで:hover状態がクリアされないことです。

明らかに、これは他のブラウザには存在しませんが、ここで再現可能です:http: //jsfiddle.net/5dXSp/

css:hover状態を手動でクリアする方法が見つかりません。このため、毎回メニューを再構築する必要はありません。何かご意見は?

4

3 に答える 3

2

クラスとjQueryを使用してホバーを制御してみてください。これは私にとってはうまくいったようです:http: //jsfiddle.net/5dXSp/25/

CSS:

.box{
    height:200px;
    margin:10px 0;
}    
.button{
    display:block;
    width:200px;
    height:20px;  
    background:#ccc;      
}
.hover {
  background-color: #000;
 }​

jQuery:

$(".button").hover(
  function () {
   $(this).addClass("hover");
  }, 
  function () {
    $(this).removeClass("hover");
  }
);

$(".button").click(function(ev){
    ev.preventDefault();
    $(ev.target).appendTo($(".catch"));
    $(this).removeClass("hover");
});
于 2012-09-12T13:34:55.303 に答える
2

それを修正するもう1つの方法があります。DOMからデタッチする前に要素を非表示にすることができますが、別のイベント処理で行うことができます。そんな感じ:

// HTML structure: <div id="aaa"> <a id="bbb"> Text </a> </div>

var bbb = document.getElementById('bbb');
var container = document.getElementById('aaa');

bbb.attachEvent("onclick", function() {
    bbb.style.display = "none";

    window.setTimeout(function() {
        container.removeChild(bbb);
        bbb.style.display = "";

        // Some time later

        window.setTimeout(function() {
            container.appendChild(bbb);
        }, 2000);
    }, 1);
});

bbb.style.visibility="hidden"も機能しました。

于 2013-03-04T09:19:25.473 に答える
0

jqueryを使用すると、次のような醜いことができます。

if($.browser.msie)
   $('el').html($(el).html());

要素を取り外して取り付ける

于 2013-10-21T12:43:38.800 に答える