Jquery .live已弃用,无法使用.on来处理运行时元素

时间:2013-06-30 18:36:06

标签: jquery node.js

我正在使用带有socket.io,express,jade,jsdom,jquery和mongoose的nodejs,并且我通过来自服务器的socket.io事件在客户端加载了页面元素(这样就刮掉了几页到得到各种各样的东西)

一切正常,一切都得到了很好的加载,但我需要运行时加载的元素(div,列表或表[我已经尝试过所有])与jquery一起使用,经过一些研究后我找到了jQuery .live,它在版本1.9中删除了。所以我尝试了以下......

$('.vid_item').on('mouseover', function(event) {
    if (event.type == 'mouseover') {
        alert('Yay, mouse-over on the loaded element');
    } else {
        // do something on mouseout
    }
});

作为一个测试,我在jade布局中有一个'.vid_item'div,与页面的其余部分一起加载,鼠标悬停事件在该元素上完美运行,但仍然无法处理后加载的项目服务器返回它的数据并触发socket.io事件以向页面添加项目。

我错过了什么吗?如果需要,可以从项目中提供其他代码!

提前干杯!

1 个答案:

答案 0 :(得分:0)

像这样使用:

 $(document.body).on('mouseover', '.vid_item', function(event) {

jQuery集接收事件,然后将其委托给与作为参数给出的选择器匹配的元素。这意味着与使用live时相反,执行代码时jQuery集元素必须存在。您可以将document.body替换为绑定时存在的任何元素,以及'.vid_item'元素所在的元素。