0

我正在使用这些完美运行的功能:

    $(document).on('click', '.profile li', function(e) {
            //Alot of cool code
    });
    $(document).on('mouseenter', '.profile li', function(e) {
            //Alot of cool code
    });
    $(document).on('mouseleave', '.profile li', function(e) {
            //Alot of cool code
    });
    $(document).on('keydown', '.profile li', function(e) {
            //Alot of cool code
    });

但我想将它们组合成这样:

    $('.profile li').on({
        mouseenter: function (e) {
             //Alot of cool code
        },
        mouseleave: function (e) {
             //Alot of cool code
        },
        click: function (e) {
            //Alot of cool code
        },
        keydown: function (e) {
            //Alot of cool code
        }
    });

但是,由于它们依赖于在 dom 之后创建的元素,因此组合代码不起作用。所以我的问题是,有没有办法将它们组合成第二种方式,并且仍然让它们与在 dom 之后创建的类一起工作。将它们结合起来真的有什么意义吗?我似乎记得读过一些更好的地方,但我不记得为什么或者那是否是一个梦......

4

3 回答 3

3

只需将选择器作为第二个参数传递,注意使用最接近的静态父对象比使用文档对象更有效。

$(document).on({
    mouseenter: function (e) {
         //Alot of cool code
    },
    mouseleave: function (e) {
         //Alot of cool code
    },
    click: function (e) {
        //Alot of cool code
    },
    keydown: function (e) {
        //Alot of cool code
    }
}, '.profile li');
于 2012-12-14T22:32:27.130 回答
0

几天前我问过一个等效的问题

我的答案很简单,使用我的解决方法功能gist

所以你可以像这样简单地使用它:

$(document).act(
    ['mouseenter', 'selector1', function() {}],
    ['mouseleave', 'selector2', function() {}],
    ['mousedown', 'selector3', function() {}],
    ['mouseup', 'selector4', function() {}]
);

甚至很简单,没有我的脚本:

$(document).on({
    mouseenter: function() {},
    mouseleave: function() {},
    mousedown: function() {},
    mouseup: function() {}
}, "selector");

但是,这假设您希望对所有这些事件使用相同的选择器。

于 2012-12-14T22:31:49.873 回答
0

如果.profile是静态元素,试试这个:

$('.profile').on({
        mouseenter: function (e) {
             //Alot of cool code
        },
        mouseleave: function (e) {
             //Alot of cool code
        },
        click: function (e) {
            //Alot of cool code
        },
        keydown: function (e) {
            //Alot of cool code
        }
    },'li');​​​​
于 2012-12-14T22:32:41.997 回答