gpt4 book ai didi

jquery - 使用 Sortable 时悬停不会消失

转载 作者:太空狗 更新时间:2023-10-29 14:21:10 24 4
gpt4 key购买 nike

我有以下脚本,它在 Chrome 中运行良好但在 IE8 中运行不正常:

jQuery:

$("<div class='divButtons'></div>").appendTo( $(".widget_header") );
$(".divButtons").text("321");

CSS:

.divButtons { background:orange; display:none; }
.widget:hover .divButtons { display:block; }

jsFiddle:

这是一个jsFiddle完整的东西。

什么有效:

发生的事情是,当我将鼠标悬停在 .widget 上时, css 导致 .divButtons显示。到目前为止一切都很好。当我移动 .widget到另一个.widget放手,.widget s 换地方,.widget我悬停在上面的仍然显示 .divButtons , 一切都很好。如果我mouseout.widgethover在另一个.widget , .divButtons.widget 中消失我是hover结束并出现在 .widget 上我是hover正在结束。到目前为止一切都很好。

问题:

IE8 中的问题,在 Chrome 中不会发生,是当我 hover.widget ,这会导致 .divButtons出现在.widget我是hover正在结束。如果我然后移动那个 .widgetwhite部分屏幕再松手,我就不再hover浏览 .widget ,但是 .divButtons仍在 .widget 上显示我只是放手。

这不应该发生。正如我之前提到的,这在 Chrome 中运行良好。

问题:

有什么方法可以让它在 IE8 中正常工作,因为它目前在 Chrome 中工作?

最佳答案

IE8 似乎有一个错误,当元素从鼠标范围内移出时,mouseoutmouseleave 永远不会在该元素上触发。因此 :hover 永远不会被删除,jquery 中的所有 mouseout、hoverleave 等事件监听器都不会被调用。

我想到的是在释放 .widget 时检查是否有任何 .column 悬停。如果没有任何列悬停,我们会从小部件中删除悬停状态。

我在 .widget 上使用了一个 .hover 类来维护它,因为我们无法使用 jquery 删除 :hover

jsFiddle

这是一个jsFiddle工作修复。

CSS

.widget.hover .divButtons { display:block; }​

jQuery

// We use this rather than :hover as :hover didn't always work in ie
$('.column').hover(function() {
$(this).addClass('hover');
}, function() {
$(this).removeClass('hover');
});

// This is our base widget hover code
$('.widget').hover(function() {
$('.widget.hover').removeClass('hover');
$(this).addClass('hover');
}, function() {
$(this).removeClass('hover');
});

jQuery 可排序调用

$( ".column" ).sortable({
connectWith: ".column",
tolerance: 'pointer',
// We use stop to call this when the widget has been dropped
stop: function(event, ui) {
// We wait 1 millisecond until after the widget is dropped
setTimeout(function() {
// Check if any widget is hovered. Good browsers will have 0 here and skip the following. IE8 will have 1 here
if ($('.widget.hover').size() > 0) {
// We check if the widgets parent column does not has hover
if (!$('.widget.hover').first().parent().is('.hover')) {
// If no column hover. We remove this hover class
$('.widget.hover').removeClass('hover');
}
}
}, 1);
}
});

我希望这对你有用。

令人恼火的是,在 2012 年我们仍然不得不做出如此困难的工作,因为 IE 的版本有这样的错误。

关于jquery - 使用 Sortable 时悬停不会消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13311527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com