我正在动态添加一些元素,现在我尝试使用hover()
绑定和on()
,但这似乎不适用于回调函数。任何想法?
的jQuery :
$(document.body).on('hover', 'div.settings-container', function () {
$(this).find('ul.settings-links').fadeIn();
}, function () {
$(this).find('ul.settings-links').fadeOut();
});
简化了jsfiddle。
答案 0 :(得分:5)
在jQuery中,$(selector).hover(handlerIn, handlerOut)
只是
$(selector).mouseenter(handlerIn).mouseleave(handlerOut);
hover
不是一个事件,您需要使用mouseenter
和mouseleave
。
$('body').on({
mouseenter: function() {
$(this).find('ul.settings-links').fadeIn();
},
mouseleave: function() {
$(this).find('ul.settings-links').fadeOut();
}
}, 'div.settings-container');
答案 1 :(得分:1)
方法“on”使用“hover”作为两个事件的快捷方式 - mouseenter和mouseleave使用event.type来检测它们
$(document).on('hover', 'a.hover-me', function (e) {
if (e.type == "mouseenter") {
alert("show");
} else {
alert("hide");
}
});
答案 2 :(得分:0)
无法同时使用.on()
和hover
事件! :(
作为后备,您可以使用此脚本:
$("div.settings-container").on({
mouseenter: function () {
alert("Mouse Over!");
},
mouseleave: function () {
alert("Mouse Out!");
}
});
答案 3 :(得分:0)
请尝试mouseenter
和mouseout
代理事件......无法将.hover()
与.on()
一起使用..
答案 4 :(得分:0)
关于on
上有关jquery文档的其他说明从jQuery 1.8开始不推荐使用:名称“hover”用作简写 字符串“mouseenter mouseleave”。它附加一个事件处理程序 对于这两个事件,处理程序必须检查event.type 确定事件是否为mouseenter或mouseleave。不要 将“hover”伪事件名称与.hover()方法混淆 接受一个或两个功能。
因此,当您将hover
与on
一起使用时,它假定您正在使用此hover
A function to execute when the mouse pointer enters or leaves the element.
因此要么使用,
$(document).on('hover', 'ul.settings-links', function (e) {
if (e.type == "mouseenter") {
alert("show");
} else {
alert("hide");
}
});
OR
$('body').on({
mouseenter: function() {
$(this).find('ul.settings-links').fadeIn();
},
mouseleave: function() {
$(this).find('ul.settings-links').fadeOut();
}
}, 'div.settings-container');
您无法使用接受两个功能作为参数的hover
。
答案 5 :(得分:-1)
检查此FIDDLE
$('a.hover-me').on({
mouseenter: function(){
$('.test').show();
},
mouseleave: function(){
$('.test').hide();
}
});