问题
I'm using the following jquery code to show a contextual delete button only for table rows we are hovering with our mouse. This works but not for rows that have been added with js/ajax on the fly...
Is there a way to make this work with live events?
$("table tr").hover(
function () {},
function () {}
);
回答1:
jQuery 1.4.1 now supports "hover" for live() events, but only with one event handler function:
$("table tr").live("hover",
function () {
});
Alternatively, you can provide two functions, one for mouseenter and one for mouseleave:
$("table tr").live({
mouseenter: function () {
},
mouseleave: function () {
}
});
回答2:
$('.hoverme').live('mouseover mouseout', function(event) {
if (event.type == 'mouseover') {
// do something on mouseover
} else {
// do something on mouseout
}
});
http://api.jquery.com/live/
回答3:
.live()
has been deprecated as of jQuery 1.7
Use .on()
instead and specify a descendant selector
http://api.jquery.com/on/
$("table").on({
mouseenter: function(){
$(this).addClass("inside");
},
mouseleave: function(){
$(this).removeClass("inside");
}
}, "tr"); // descendant selector
回答4:
As of jQuery 1.4.1, the hover event works with live()
. It basically just binds to the mouseenter and mouseleave events, which you can do with versions prior to 1.4.1 just as well:
$("table tr")
.mouseenter(function() {
// Hover starts
})
.mouseleave(function() {
// Hover ends
});
This requires two binds but works just as well.
回答5:
This code works:
$(".ui-button-text").live(
'hover',
function (ev) {
if (ev.type == 'mouseover') {
$(this).addClass("ui-state-hover");
}
if (ev.type == 'mouseout') {
$(this).removeClass("ui-state-hover");
}
});
回答6:
WARNING: There is a significant performance penalty with the live version of hover. It's especially noticeable in a large page on IE8.
I am working on a project where we load multi-level menus with AJAX (we have our reasons :). Anyway, I used the live method for the hover which worked great on Chrome (IE9 did OK, but not great). However, in IE8 It not only slowed down the menus (you had to hover for a couple seconds before it would drop), but everything on the page was painfully slow, including scrolling and even checking simple checkboxes.
Binding the events directly after they loaded resulted in adequate performance.
来源:https://stackoverflow.com/questions/2262480/jquery-live-hover