我有以下 Javascript/jQuery 函数:
function addEventHandler(){
$("div").mouseenter(function() {
$(this).html("Over");
}).mouseleave(function() {
$(this).html("Out");
});
}
它有效,但并不完美。div 有时会稍微重叠(不要问),并且正如下图试图传达的那样,它们并不总是得到“Out”值。尤其是当我将指针快速移到它们上方时,会发生这种情况。
任何想法如何确保每个 div 在 mouseleave 上获得“Out”值?谢谢!
更新:真实代码摘录
由于我的真实函数并不像上面的示例那么简单,因此我在此处包含了真实函数的确切代码:
function addEventHandlers(){
var originalContent = "";
$(".countryspots div").mouseenter(function() {
var thisClass = $(this).attr("class");
var thisCountry = thisClass.split(" ");
var thisNumber = getNumber(thisCountry[1]);
originalContent = $(this).children("a").html();
$(this).children("a").html("<span>" + thisNumber + "</span>");
}).mouseleave(function() {
$(this).children("a").html(originalContent);
});
}
我的 HTML 标记是这样的:
<div class="countryspots">
<div class="america brazil"><a href="#"><span>Brazil</span></a></div>
<div class="america argentina"><a href="#"><span>Argentina</span></a></div>
<div class="europe ireland"><a href="#"><span>Ireland</span></a></div>
<div class="europe portugal"><a href="#"><span>Portugal</span></a></div>
</div>
一般的想法是,最里面的国家名称<span>
与代表员工的数字交换mouseenter
(从 检索getNumber();
) - 然后交换回来mouseleave
。
真正的问题是当我将指针移到另一个 div 上时,许多 div 保留了他们的员工编号。换句话说:mouseleave
事件不会在所有 div 上执行。
现场示例:http: //jsfiddle.net/N9YAu/4/
希望这可以帮助。再次感谢!