怎么给Ajax元素节点动态绑定事件?

需要实现的功能是“将所有元素节点都绑定mousemove事件”,这个功能对于静态节点很容易实现,但对于VUE等框架打包的项目来说,它们全是Ajax元素,该怎么给那些元素绑定事件呢?

所有元素的id和class是不可见的。

阅读 3.8k
4 个回答

直接在创建结构的时候,就把方法名和事件加在结构中, 下面只需在months: 写方法即可。
<div @click="add()"></div> 这样子

1.如上面回答中,在创建元素的时候,直接创建事件是可以的
2.创建的所有元素都给相同的class名称,用on监听元素,即可监听到动态创建的元素

$(document).on('click','.classname',function(){});

推荐第二种方法,事件耦合在html中逻辑容易混乱

$("父级静态节点").on("click","动态节点",function(){
    //do something
})

这样可以为动态添加的节点绑定事件

可以通过事件委托实现,事件委托实用的场景主要包含下面2个

  1. 大量元素相同事件处理
  2. 动态元素事件处理

示例代码如下:

parent. onclick=function(event){
    let target = event.target;//精确的事件触发元素
    /* 根据你自己的业务,对应进行处理 */
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题