这可行(.hover
):
$('a.directory:not(.trashContent), a.file:not(.trashContent)').hover(function() {
if (!dragged) $(this).find('a.suppr:first').show();
}, function() {
$(this).find('a.suppr:first').hide();
});
这不起作用(.live('hover')
):
$('a.directory:not(.trashContent), a.file:not(.trashContent)').live('hover', function() {
if (!dragged) $(this).find('a.suppr:first').show();
}, function() {
$(this).find('a.suppr:first').hide();
});
知道为什么吗?
答案 0 :(得分:3)
它不起作用的原因是,悬停不是真正的单一事件。它将用于mouseenter和mouseleave的事件处理程序绑定在一起。 意味着悬停本身不是一个真正的自己的事件处理程序。要使其与live(更好地使用.on())一起使用,您必须使用分离的事件处理程序。
$("#Element").live({
mouseenter:function(){
//do something
},
mouseleave:function(){
//do something
}
});
答案 1 :(得分:-2)
.live很老了。从jQuery 1.7开始,jQuery中有一个全新的Event API,您应该对所有事件使用.on()
。
一个例子:
$('a.directory:not(.trashContent), a.file:not(.trashContent)').on('mouseenter', function() {
console.log('You have hovered on ' + $(this));
});
您可以更好地选择与.is()
组合的元素:
$('a.directory, a.file').is(':not(.trashContent)', function() {
var $elem = jQuery(this);
$elem.on('mouseenter', function() {
console.log('You have hovered on ' + $elem);
});
});