簡述:我想用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