在开发过程中有时会遇到需要利用js动态为页面拼接元素的情况,但是监听事件在页面加载完就会绑定到指定的元素上,之后执行的js方法拼接的元素将无法触发事件。例如:
$("#menuBoxTop").append(temp);
解决办法为,利用jquery的on()方法,为所要拼接元素的父元素添加监听事件,on方法的语法如下:
$(selector).on(event,childSelector,data,function)
参数说明:
参数 | 描述 |
---|---|
event | 必需。规定要从被选元素移除的一个或多个事件或命名空间。由空格分隔多个事件值,也可以是数组。必须是有效的事件 |
childSelector | 可选。规定只能添加到指定的子元素上的事件处理程序(且不是选择器本身,比如已废弃的 delegate() 方法)。 |
data | 可选。规定传递到函数的额外数据。 |
function | 可选。规定当事件发生时运行的函数。 |
在这里使用第1个,第2个和第3个参数来完成,例如:
$("#menuBoxTop").on("mouseenter","li div .four-second",function(){
$(this).css("background-color", "white");
})
代码说明
为id为menuBoxTop的标签添加一个on()方法,其中event参数为"mouseenter",添加鼠标进入事件;childSelector参数为"li div .four-second",代表当鼠标进入当前事件所绑定的元素下li下的div下的class为four-second的元素时,才使得事件发生运行;function参数为将需要操作的元素背景颜色改为白色。