基于jquery的on和click的区别详解


Posted in jQuery onJanuary 15, 2018

使用jQuery写js时,有些用on写行为函数,有些用click,弄清二者区别很重要。

以下是用于测试二者区别的HTML代码。

<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
 <div>
  <h1>展示jQuery中on()和click()的区别</h1>
 </div>
 <div>
  <span>点击生成新按钮。NewOn生成的Delete按钮行为用on()实现,NewClick生成的Delete按钮行为用click()实现。</span>
 </div>
 <div class="test">
  <button class="new" id="newon">NewOn</button> 
  <button class="new" id="newclick">NewClick</button>
  <ul class="li"> 
   <li>原先的HTML元素on<button class="deleteon">Delete</button></li> 
   <li>原先的HTML元素click<button class="deleteclick">Delete</button></li> 
  </ul> 
 </div>
</body>
<script src="/static/js/jquery-3.1.1.min.js"></script>
<script src="/static/js/test.js"></script>
</html>

js文件如下:

$("#newclick").click(function(){ 
 $(".li").append('<li>动态添加的HTML元素click<button class="deleteclick">Delete</button></li>'); 
});
$("#newon").click(function(){ 
 $(".li").append('<li>动态添加的HTML元素on<button class="deleteon">Delete</button></li>'); 
});
$(".delete").click(function(){ 
 $(this).parent().remove(); 
}); 

$(".li").on('click', ".deleteon", function(){
 $(this).parent().remove(); 
})
$(".deleteclick").click(function(){ 
 $(this).parent().remove(); 
});

页面加载后,点击NewOn和NewClick按钮,页面如下图所示。

基于jquery的on和click的区别详解

现象:

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

原因:

element.click()这种写法不支持给动态元素或样式绑定事件。支持给动态元素绑定事件的是.live()和.on()。live在jQquery1.7后就不推荐使用了。使用.on()时注意,on前面的元素必须在页面加载的时候就存在DOM里面。

以上这篇基于jquery的on和click的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery UI Grid 模态框中的表格实例代码
Apr 01 jQuery
jQuery树插件zTree使用方法详解
May 02 jQuery
jquery鼠标悬停导航下划线滑出效果
Sep 29 jQuery
jQuery AJAX 方法success()后台传来的4种数据详解
Aug 08 jQuery
jQuery实现基本隐藏与显示效果的方法详解
Sep 05 jQuery
jQuery实现的别踩白块小游戏完整示例
Jan 07 jQuery
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
Feb 27 jQuery
如何使用CSS3+JQuery实现悬浮墙式菜单
Jun 18 jQuery
jQuery实现input[type=file]多图预览上传删除等功能
Aug 02 jQuery
jquery实现购物车基本功能
Oct 25 jQuery
基于jQuery实现挂号平台首页源码
Jan 06 jQuery
js、jquery实现列表模糊搜索功能过程解析
Mar 27 jQuery
vue-cli webpack 引入jquery的方法
Jan 10 #jQuery
jQuery第一次运行页面默认触发点击事件的实例
Jan 10 #jQuery
Vue+jquery实现表格指定列的文字收缩的示例代码
Jan 09 #jQuery
如何快速解决JS或Jquery ajax异步跨域的问题
Jan 08 #jQuery
jQuery+SpringMVC中的复选框选择与传值实例
Jan 08 #jQuery
JQuery实现table中tr上移下移的示例(超简单)
Jan 08 #jQuery
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
Jan 08 #jQuery
You might like
超级实用的7个PHP代码片段分享
2012/01/05 PHP
PHP Cookie的使用教程详解
2013/06/03 PHP
php设置session值和cookies的学习示例
2014/03/21 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
Javascript 读后台cookie代码
2008/09/15 Javascript
JavaScript经典效果集锦
2010/07/06 Javascript
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
JS简单实现获取元素的封装操作示例
2017/04/07 Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
2017/04/18 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
使用layui 的layedit定义自己的toolbar方法
2019/09/18 Javascript
Python线程中对join方法的运用的教程
2015/04/09 Python
浅谈python jieba分词模块的基本用法
2017/11/09 Python
tensorflow 使用flags定义命令行参数的方法
2018/04/23 Python
python如何将多个PDF进行合并
2019/08/13 Python
dpn网络的pytorch实现方式
2020/01/14 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
2021/01/29 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
2021/02/07 Python
CSS3实现内凹圆角的实例代码
2017/05/04 HTML / CSS
中学生爱国演讲稿
2013/12/31 职场文书
五年级音乐教学反思
2014/02/06 职场文书
《列夫托尔斯泰》教学反思
2014/02/10 职场文书
出纳员岗位职责
2014/03/13 职场文书
爱情寄语大全
2014/04/09 职场文书
村道德模范事迹材料
2014/08/28 职场文书
挂职学习心得体会
2014/09/09 职场文书
车间主任岗位职责
2015/02/03 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书
创业计划书之网吧
2019/10/10 职场文书
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server