我需要以編程方式觸發懸停僞類(如果可能,冒泡,否則我將被迫更改爲所有元素的父母)。 我沒有html頁面的控制權,所以我無法更改css:將鼠標懸停在.hover上,以便將HTMLElement的類更新爲.hover。以編程方式觸發懸停css僞類
這可能嗎?
請不要JQUERY。我無法在我的項目中使用JQuery。
預先感謝您。
UPDATE
我已經創建了一種代理的CSS加載的,所以現在的CSS加載之前,它通過在改變從我的規則「代理」:懸停.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 > 0)
index = oldHoveredElements.indexOf(element);
if(index > -1){
oldHoveredElements.splice(index, 1);
} else {
actualHoveredElements.push(element);
element.classList.add("hoverclass");
}
if(element.tagName != "BODY" && element.tagName != "HTML"){
if(hoverAddedCount < maxHoveredElems-1){
hoverAddedCount ++;
oldHoveredElements = setHoverForParentsOfElement(element.parentNode, oldHoveredElements);
}
}
return oldHoveredElements;
}
正如你所看到的,我也試圖限制懸停冒泡到N的數量,但性能問題仍然存在。
我就因此要查找重複的,而我看到的是解決方案用jQuery ... +1給你。 –
你能發佈一些相關的代碼嗎? – anurupr
所以你想用onmouseover與onmouseout事件? – Sora