on()和click()区别

on() 和 click() 的区别: on()可以删除动态创建的标签,click()不可以

二者在绑定静态控件时没有区别,但是如果面对动态产生的控件,只有 on() 能成功的绑定到动态控件中。

以下实例中原先的 HTML 元素点击其身后的 Delete 按钮就会被删除。而动态添加的 HTML 元素,使用 click() 这种写法,点击 Delete 按钮无法删除;使用 On() 方式可以。

html:
<li class="newOn">原先的Html</li>
<li class="newClick">原先的Html</li>
<div class="container">
<li class="deleteon">on删除</li>
<li class="deleteclick">click删除</li>
</div>

js:
$('.newOn').click(function(){
$('.container').append("<li class='deleteon'>on删除</li>");
})
$('.newClick').click(function(){
$('.container').append("<li class='deleteclick'>click删除</li>");
})
$(this).on('click','.deleteon',function(){
alert('dd')
console.log(this) //li标签
$(this).remove();
})
/方法二:
$('.container').on('click','.deleteon',function(){
alert('dd')
console.log(this) //li标签
$(this).remove();
})
/
$('.deleteclick').click(function(){
$('.deleteclick').remove();

        })

对于动态绑定元素可以这样写

$(document).on('click', '.xxx', function() {
// do something
});
$(document)可以改成要绑定事件元素的父节点

.xxx 就是指的当前元素

这样就可以实现事件的代理

//一个标签绑定多个事件
$('.gejin').on('click mouseover',function(){
$('.gejin,.xiechang').css('color','blue');
})
//多个标签绑定多个事件
$('.xiechang,.gejin').on({
click:function(){alert('sss')},
mouseover:function(){$(this).css('color','red')},
mouseout:function(){$(this).css('color','blue')}
})

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 4,897评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,302评论 19 139
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 5,199评论 0 2
  • 前端开发面试题 <a name='preface'>前言</a> 只看问题点这里 看全部问题和答案点这里 本文由我...
    自you是敏感词阅读 4,185评论 0 3
  • 前段时间反腐大剧《人民的名义》热播,火了一批男演员。 与其他电视剧相比,该剧中的女性角色很少且着墨不多,但都各有特...
    玛莉随心记阅读 4,761评论 0 0