最近有一个项目,是给每一个列表加上点击事件,列表数据是动态的
于是乎写了下面代码
<ul>
<li ms-for="(index,el) in @columnList">
{{el}}
</li>
</ul>
$('li').click(function(){
console.log($(this))
})
但发现根本不执行,想着应该是事件根本没有绑到dom上,于是直接用onclick
<ul>
<li ms-for="(index,el) in @columnList" onclick="test(this)">
{{el}}
</li>
</ul>
function test(e){
console.log($(e))
}
可行,但是总觉得这样写麻烦了,其实也没麻烦多少,但是还是想看看click到底怎么了,也不想把事件绑在dom上
后来查了一些资料,找到了on()这个方法,
on() 和 click() 的区别:
二者在绑定静态控件时没有区别,但是如果面对动态产生的控件,只有 on() 能成功的绑定到动态控件中。
<ul>
<li ms-for="(index,el) in @columnList">
{{el}}
</li>
</ul>
$('ul').on('click','li',function(){
console.log($(this))
})