我有以下代码:
$('body').on('mouseenter', 'img[id$=_fav]', function(event) {
$(this).parent().css("border-top-color", "#000");
});
$('body').on('mouseleave', 'img[id$=_fav]', function(event) {
$(this).parent().css("border-top-color", "gray");
});
我想知道如何将这两者合并为一个悬停事件,或者这是不可能使用“实时”方式?
我想要这样的事情:
$('body').on('hover', 'img[id$=_fav]', function(event) {
function(){ //mouse enter
$(this).parent().css("border-top-color", "#000");
}
function(){ //mouse leave
$(this).parent().css("border-top-color", "gray");
}
}
答案 0 :(得分:2)
不要将function() { twice
用于mouseenter
并使用,
分隔mouseenter
和mouseleave events
,
$('img[id$=_fav]').hover(function(event) {// use function() once for mouse enter event
$(this).parent().css("border-top-color", "#000");
},function(){ //mouse leave, you missed a comma in your code
$(this).parent().css("border-top-color", "gray");
});
阅读hover()
已更新如果您要hover
使用dynamically added elements
,那么您必须使用 on()和mouseenter mouseleave events
正在使用,
在jQuery 1.8中弃用,在1.9中删除:名称
"hover"
用作 字符串"mouseenter mouseleave"
的简写。它附单 这两个事件的事件处理程序,处理程序必须检查 event.type,用于确定事件是mouseenter还是mouseleave。 不要将"hover" pseudo-event-name
与.hover()
方法混淆, 它接受一个或两个功能。
答案 1 :(得分:1)
基本上你想把hover event
挂钩到动态创建/添加到DOM
的元素上。由于我们无法使用hover
获得on
的相同语法,因此我们可以使用event type
来转移控制流。从技术上讲,hover
只会处理屏幕后面的mouseenter
和mouseleave
。尝试使用以下代码
$(document).on("hover",'img[id$=_fav]', function(e) {
if(e.type == "mouseenter") {
}
else if (e.type == "mouseleave") {
}
});
注意: 请跳过上述部分。只需了解它以供将来使用
由于悬停事件在1.9之后从Jquery中删除,但不是.hover()函数。你不能在以后使用它与最新的库。而是尝试使用下面的mouseenter
和mouseleave
进行处理,
$(document).on({
mouseenter: function () {
},
mouseleave: function () {
}
}, 'img[id$=_fav]');
答案 2 :(得分:-2)
完全按照您的意愿完成:see the docs.