Css IE9未删除:DOM更改上的悬停样式

Css IE9未删除:DOM更改上的悬停样式,css,internet-explorer,dom,internet-explorer-9,hover,Css,Internet Explorer,Dom,Internet Explorer 9,Hover,我试图在弹出框上创建一个具有:hover状态的按钮,当您使用其中一个按钮时,我将从DOM中删除该框并将其保存以供将来交互。问题是,当我在IE9中将其重新连接到DOM时,它没有清除:hover状态,直到下次将其悬停,然后将鼠标移出 显然,这在任何其他浏览器上都不存在,但在此处可以复制: 我找不到手动清除css:hover状态的方法,我真的不想每次都因为这个而重建菜单。有什么想法吗?尝试用类和jQuery控制悬停。这似乎对我有用: CSS: jQuery: $(".button").hover(

我试图在弹出框上创建一个具有:hover状态的按钮,当您使用其中一个按钮时,我将从DOM中删除该框并将其保存以供将来交互。问题是,当我在IE9中将其重新连接到DOM时,它没有清除:hover状态,直到下次将其悬停,然后将鼠标移出

显然,这在任何其他浏览器上都不存在,但在此处可以复制:


我找不到手动清除css:hover状态的方法,我真的不想每次都因为这个而重建菜单。有什么想法吗?

尝试用类和jQuery控制悬停。这似乎对我有用:

CSS:

jQuery:

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

$(".button").click(function(ev){
    ev.preventDefault();
    $(ev.target).appendTo($(".catch"));
    $(this).removeClass("hover");
});

尝试使用类和jQuery控制悬停。这似乎对我有用:

CSS:

jQuery:

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

$(".button").click(function(ev){
    ev.preventDefault();
    $(ev.target).appendTo($(".catch"));
    $(this).removeClass("hover");
});

还有一种方法可以解决这个问题。 您可以在将元素从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=隐藏也起作用。

还有一种解决方法。 您可以在将元素从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=隐藏也起作用。

使用jquery,您可以做一些丑陋的事情,例如:

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

要使用jquery取消并附加元素

,可以执行以下操作:

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

我不太懂如何拆卸和连接该元件。在移动到另一个位置后,按钮应该是黑色的,在那里它没有鼠标悬停,但是应该应用:hover状态?如果您重新附加一个元素,它当然不会悬停。问题是,当我移动它时:悬停状态仍然应用在本例中为黑色,我希望它返回到未悬停状态为灰色,因为鼠标不再悬停按钮。我不太理解它。在移动到另一个位置后,按钮应该是黑色的,在那里它没有鼠标悬停,但是应该应用:hover状态?如果重新附加一个元素,它当然不会悬停。问题是,当我移动它时:悬停状态仍然应用在本例中为黑色,我希望它返回到未悬停状态为灰色,因为鼠标不再悬停在按钮上。谢谢你,尽管我希望javascript的侵入性更小,我玩的类名越少越好,毕竟css psudo类就是为了这个!这似乎是实现这一点的唯一方法,但仍然很遗憾。谢谢你,尽管我希望javascript的侵入性更小,但我玩类名的次数越少越好,毕竟css psudo类就是为了这个!这似乎是唯一的方法,但仍然很遗憾。谢谢,这是一个很好的解决方案,对我来说很有效。我不想因为IE9已经死了,就不得不重新构造CSS+JS。谢谢,这是一个很好的解决方案,对我来说很有效。我不想仅仅因为IE9已经脑死亡就不得不重新构建CSS+JS。