[英]Update mouse cursor without moving mouse with changed CSS cursor property
[英]Cursor is changed via CSS :hover. Element is removed from the DOM without mouse moving. Update mouse cursor?
我有一個動態創建的HTML元素。 它具有一些CSS和HTML:
<div id="element"></div>
#element{
height: 200px;
width: 200px;
background-color: blue;
}
#element:hover{
cursor: pointer;
}
然后將其以編程方式從頁面上移除,而鼠標仍位於元素上方。
$('#element').hover(function(){
setTimeout(function(){
$(this).remove();
}.bind(this), 1000);
});
這使光標看起來像指針,直到鼠標移動為止。 在仍然使用CSS懸停的同時,有什么方法可以解決此問題?
這是一個小提琴: http : //jsfiddle.net/mHdtU/
編輯:這是最新的Google Chrome瀏覽器。 同樣,顯然HIDING該元素會使光標更新。 光標沒有更新的事實是否消除了Google Chrome中的錯誤?
$('#element').hover(function(){
setTimeout(function(){
$(this).hide();
setTimeout($(this).remove.bind(this));
}.bind(this), 1000);
});
不確定是否適合您,但可以使用
$(this).hide();
插入.remove()以使指針返回到箭頭。
在您回答的編輯之后:
$('#element').hover(function(){
setTimeout(function(){
$(this).hide(0,function(){$(this).remove.bind(this)});
}.bind(this), 1000);
});
這樣,您就可以等到隱藏動畫完成為止。
另一個解決方法是為第一個元素消失后顯示的元素設置光標樣式。
例如,我用四個堆疊在一起的小提琴制作了這個小提琴 ,所以您可以看到它們消失了,並在超時結束時重新堆疊。
如果將鼠標懸停在第二個框上,它將有一個pointer
光標,並且在調用.remove()
之后,光標將更新為十字准線。 這是因為鼠標現在懸停在其上的元素具有cursor
樣式。
#element2:hover {
cursor: pointer;
}
#element3:hover {
cursor: crosshair;
}
我本來以為瀏覽器會自行更新光標狀態以inherit
或default
狀態,但是正如您已經指出的那樣,除非您使用.hide()
否則這似乎需要移動鼠標。
更新
OP的場景中沒有平移元素,只是刪除了一個div,並在其后面添加了父元素。 為了使鼠標在.remove()
上使用父元素的cursor
樣式,我必須將父元素的cursor
樣式設置為函數的一部分:
setTimeout(function () {
$(this).parent()
.css({'cursor':'default'}),
$(this).remove();
}.bind(this), 1000);
這是容器解決方案的新提琴: http : //jsfiddle.net/mHdtU/22/
你可以做這樣的事情
標記部分
<div id="parElem">
<div id="element"></div>
</div>
Java腳本
$('#element').hover(function(){
setTimeout(function(){
$(this).remove();
$('#parElem').css('cursor', 'default');
}.bind(this), 1000);
});
您的http://jsfiddle.net/mHdtU/中的 CSS。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.