我一直试图找到mouseover
在Chrome中模拟的代码,但即使"mouseover"监听器被触发,CSS"悬停"声明也永远不会被设置!
我也尝试过:
//Called within mouseover listener
theElement.classList.add("hover");
Run Code Online (Sandbox Code Playgroud)
但似乎没有任何东西可以将元素更改为其hover
声明中声明的内容.
这可能吗?
有没有办法以onmouseover
简单的JavaScript 以编程方式触发事件?或者从onmouseover
事件"提取"方法直接调用它?
例如
<div id="bottom-div" onmouseover="myFunction('some param specific to bottom-div');">
<div id="top-div" onmouseover="????????"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
top-div高于bottom-div,因此onmouseover
不会在bottom-div中触发.我需要一种myFunction('some param specific to bottom-div');
从top-div 调用的方法
我需要以编程方式触发悬停伪类(如果可能的话冒泡,或者我也将被迫调用所有元素父变换).我没有对html页面的控制,所以我无法更改css:hover to .hover以便将HTMLElement的类更新为.hover.
那可能吗?
请不要发表评论.我不能在我的项目中使用JQuery.
先感谢您.
UPDATE
我已经为CSS加载创建了一种代理,所以现在在加载css之前,它会传递我的"代理",它会改变规则:hover to .hoverclass.
好吧,现在悬停效果非常好,但由于悬停的冒泡模拟,我有一些严重的性能问题.
这是一些代码:
var actualHoveredElements = new Array();
var hoverAddedCount = 0;
var maxHoveredElems = 5;
function changeHover(newElement, oldElement){
var oldHoveredElements = actualHoveredElements.slice();
var remainingElements = setHoverForParentsOfElement(newElement, oldHoveredElements);
for(var i = 0; i < remainingElements.length; i++){
var notHoveredElement = remainingElements[i];
var actualIndex = actualHoveredElements.indexOf(notHoveredElement);
if(actualIndex > -1){
actualHoveredElements.splice(actualIndex, 1);
}
notHoveredElement.classList.remove("hoverclass");
}
hoverAddedCount = 0;
changeHoverTimeout = null;
}
function setHoverForParentsOfElement(element, oldHoveredElements){
var index = -1;
if(oldHoveredElements != "undefined" && oldHoveredElements.length …
Run Code Online (Sandbox Code Playgroud) 我想将所有:hover
类复制到.hoverid
类中,其中id
元素的索引(或任何其他方式来创建unqiue悬停类名称).
所以,我的想法是以某种方式遍历页面上的所有元素,这些元素已经:hover
定义并克隆了该类.hoverid
.这样我可以触发我想要的任何元素上的悬停效果:
$('#element').addClass('hover'+$(this).id);
Run Code Online (Sandbox Code Playgroud)
所以我的问题实际上是:
小提琴试试你的解决方案:http://jsfiddle.net/kLt2P/
有没有办法使用javascript悬停元素?我不想创建另一个类,我只是想在我的鼠标指针不在该元素上时使元素悬停在javascript上.
例如,我有5个具有相同类的元素,当我们其中一个实际悬停时,我想在所有这些元素上调用悬停.
我有<div class="animate">
和在css:
div.animate:hover{
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
但是也想通过javascript调用它.
可能吗?
我有以下代码http://jsfiddle.net/yc7sj3pt/2/
document.getElementById('obj_one').addEventListener('mouseover', function(){
var e = document.createEvent('HTMLEvents');
e.initEvent('mouseover', true, false);
document.getElementById('obj_two').dispatchEvent(e);
console.log('hover');
}, false);
Run Code Online (Sandbox Code Playgroud)
#obj_two
当我mouseover
打开时#obj_one
,我正试图做出反应悬停(因此变为红色),但它无法正常工作.我究竟做错了什么?
javascript ×8
css ×4
jquery ×3
onmouseover ×2
dom-events ×1
events ×1
firefox ×1
hover ×1
html ×1