简述:我想用JS/jQuery来优先于CSS:悬停伪类特定短暂的时刻,而不为其他多数移除CSS规则的情况。由于该站点已经足够脚本,我正试图找到一个解决方案,不需要我加入CSS交互并依靠mouseover/mouseout事件。在我的情况下,两者之间有明显的性能差异。的JavaScript/jQuery的忽视或忽略:hover样式
详情: 我创建了一个基于CSS的下拉式购物车查看器。我安装了一些JQuery,当用户触发某些页面交互操作(如将商品添加到购物车)时强制购物车打开。当购物车“以编程方式打开”时,使用8秒计时器关闭它。所有的工作。 问题:我也想添加一个点击处理程序到购物车,以便当用户点击它时,无论8秒超时是否已过期,它都将被显式关闭。但是,当他们点击购物车时 - 按照定义 - 在其上方悬停,踢入:悬停状态并保持关闭状态。有没有办法暂时禁用:悬停规则,然后一旦购物车关闭,恢复它。
HTML:
<span class="minicart-wrapper">
<a class="minicart-anchor" href="...">Shopping Cart</a>
<div id="minicart">
...
</div>
</span>
CSS:
.minicart-wrapper #minicart { display: none; }
.minicart-wrapper:hover #minicart,
.minicart-wrapper #minicart.open { display: block; }
JQuery的:
function openMinicart() {
var minicart = jQuery('#minicart');
minicart.addClass('open');
minicart.bind('click', {}, closeMinicart);
window.setTimeout(closeMinicart, 8000);
}
function closeMinicart() {
var minicart = jQuery('#minicart');
minicart.removeClass('open');
minicart.unbind('click', closeMinicart);
}
我试过了:我在这里发现了一些建议,如将
.minicart-wrapper:hover #minicart
更改为
.minicart-wrapper:hover #minicart.canhover
。然后我将
removeClass(canhover)
添加到closeMinicart()和
setTimeout(function(){jQuery('#minicart').addClass('canhover')},500);
的开头。然而,这似乎是浏览器刷新悬停状态的时间太短,并且在完成渲染之后,悬停重新触发器和购物车仍处于放置状态。
感谢您的任何建议。
编辑:谢谢Jedison。这里是JSFiddle:http://jsfiddle.net/WJS3h/。还修复了示例中的一些错误。
编辑2:原来我有一个代码错误(oops),而can-not-hover类方法是要走的路。感谢所有评论过的人。
我建议你制作一个JSFiddle,以便我们可以尝试和给你一个解决方案。 – jedison