jquery直播悬停

时间:2010-02-14 19:41:45

标签: jquery live jquery-1.4

我正在使用以下jquery代码来显示我们用鼠标悬停的表行的上下文删除按钮。这适用但不适用于已随时添加js / ajax的行...

有没有办法让这项工作与直播活动合作?

$("table tr").hover(
  function () {},
  function () {}
);

6 个答案:

答案 0 :(得分:245)

jQuery 1.4.1现在支持live()事件的“悬停”,但只支持一个事件处理函数:

$("table tr").live("hover",

function () {

});

或者,您可以提供两个函数,一个用于mouseenter,另一个用于mouseleave:

$("table tr").live({
    mouseenter: function () {

    },
    mouseleave: function () {

    }
});

答案 1 :(得分:110)

$('.hoverme').live('mouseover mouseout', function(event) {
  if (event.type == 'mouseover') {
    // do something on mouseover
  } else {
    // do something on mouseout
  }
});

http://api.jquery.com/live/

答案 2 :(得分:59)

自jQuery 1.7起,

.live()已被弃用

改用.on()并指定后代选择器

http://api.jquery.com/on/

$("table").on({
  mouseenter: function(){
    $(this).addClass("inside");
  },
  mouseleave: function(){
    $(this).removeClass("inside");
  }
}, "tr");  // descendant selector

答案 3 :(得分:5)

从jQuery 1.4.1开始,悬停事件与live()一起使用。它基本上只是绑定到mouseenter和mouseleave事件,你也可以使用1.4.1之前的版本:

$("table tr")
    .mouseenter(function() {
        // Hover starts
    })
    .mouseleave(function() {
        // Hover ends
    });

这需要两个绑定,但同样有效。

答案 4 :(得分:5)

此代码有效:

    $(".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");
            }
        });

答案 5 :(得分:2)

警告:实时版本的悬停会对性能造成严重影响。在IE8的大页面中尤其明显。

我正在开发一个用AJAX加载多级菜单的项目(我们有理由:)。无论如何,我使用了实时方法来悬停,这在Chrome上运行得很好(IE9做得不错,但不是很好)。然而,在IE8中它不仅减慢了菜单的速度(你必须在它丢弃之前悬停几秒钟),但页面上的所有内容都非常缓慢,包括滚动甚至检查简单的复选框。

在加载事件后直接绑定事件会产生足够的性能。