javascript 字符串拼接渲染的html元素,不能添加事件,为什么?哪位大神帮忙解答,感激不尽!

js字符串拼接:

'<p class="add"> <i class="icon iconfont icon2">&#xe60a;</i> &nbsp;<span class="nums"> 1 </span> &nbsp; <i class="icon iconfont icon1">&#xe63c;</i> </p>'

jquery 事件代码:

$(".add .icon1").bind("click",function(){ 
        alert("1");
        })

但是在浏览器中执行无效。

直接写在html中是有效的,但是这个需要获取数据再渲染。求哪位大神帮忙指点!

你用的是直接绑定事件的方式。这种方式必须要先把html元素添加到页面上之后,再绑定事件才有效。
如果一定要先绑定事件,再把html元素添加到页面上,就要用委托式的绑定事件方式。

$("body").on("click",".add .icon1",function(){ 
        alert("1");
})

html拼接之后,将绑定事件的代码再声明一遍。
原因是:bind函数指定绑定的时候你的html没有添加。因此对后添加的html标签需要再次绑定事件。

对于动态新加的dom元素, 需要dom元素添加完之后再绑定事件。