Я не совсем понимаю, почему вы так сильно хотите избежать hover: рассмотрим следующий сценарий
$(function(){
$('*').hover(function(){
$(this).data('hover',1); //store in that element that the mouse is over it
},
function(){
$(this).data('hover',0); //store in that element that the mouse is no longer over it
});
window.isHovering = function (selector) {
return $(selector).data('hover')?true:false; //check element for hover property
}
});
В основном идея заключается в том, что вы используете hover для установки флага на элементе, что мышь находится над ним/не находится больше над ним. А затем вы пишете функцию, которая проверяет наличие этого флага.
Самым простым способом, вероятно, будет просто отслеживать, над каким элементом постоянно находится мышь. Попробуйте что-то вроде:
<div id="1" style="border:solid 1px red; width:50px; height:50px;"></div>
<div id="2" style="border:solid 1px blue; width:50px; height:50px;"></div>
<div id="3" style="border:solid 1px green; width:50px; height:50px;"></div>
<input type="hidden" id="mouseTracker" />
$(document).ready(function() {
$('*').hover(function() {
$('#mouseTracker').val(this.id);
});
});
и тогда ваша функция будет просто
function mouseIsOverElement(elemId) {
return elemId === $('#mouseTracker').val();
}