jQuery的on绑定click和直接绑定click区别

状况之外

在之前的公司并没有遇到这个问题,也就没有深究。直到自己换了现在的公司,刚来第二天就开始写别人写到一半的项目,很无奈,不是原生就是jquery,由于项目急,已经来不及切换框架重新布局,只能继续了。

状况之中

到处都是列表,到处都是js创建的动态页面,好吧,那我也继续吧,突然,意外发生了。我绑定的click事件无效。

状况-解决呗

当时知道的原因是动态创建的元素在初始化的时候还没有,那我绑定的事件怎么可能绑定的上嘛(当时还不知道直接绑定和通过on()绑定click的区别,也不知道on('click',param,param,callback)下面介绍的用法)

<p>解决方法


$("#list").on('click',function(e){var ev = e || window.event;var target = ev.target || ev.srcElement;if (target.nodeName.toLowerCase() == 'a' &amp;&amp; target.className=='reset') {msgconfirm('','是否确认重置密码?',function(){ajax('/user/reset?id=' target.type,'','get','json',null,function(data){var userObj=data.tUser;tipalert('',{data:'密码重置成功',username:userObj.account,password:userObj.passWord,uKey:userObj.key.replace(/\,/img,'&lt;/br&gt;')},'../../images/ok-ico.png',function(){window.location.reload();})})})}})
jquery 原生,我也不想的,可是我又找不到别的解决方案,解决就OK了,虽然不好看,性能也不是太好,但是我也没有深究。

。。。。。。。。。。

状况之后的好久好久以后

那就是现在啦,看到别人的代码

$("body").on("keyup","#userId,#password",function(){if(event.keyCode==13){loginFunc();}});
我真的想对自己说“what are you 弄啥嘞”。
当时真的是没想那么多啊。在网上查了一下都说on('click',callback)适用于动态元素,click适用于静态元素。但是并没有说为什么。上面废话一大堆,下面我说一下我的理解吧。
  • 先说一下js中的预解释

页面初始化

变量

函数

  • 看完预解释就说一下今天的主题吧
  1. on('click',callback)和click在初始化时的区别

    1. 绑定静态元素:元素存在,预解释OK,所以是没啥区别啦;
    2. 绑定动态元素:元素不存在,预解释,元素都找不到,咋预解释啊,所以不管是on()还是click()都没有办法;
    3. 绑定静态元素实现动态元素的事件绑定:

&lt;html&gt;&lt;div class="test"&gt;&lt;button class="new" id="newon"&gt;NewOn&lt;/button&gt; &lt;button class="new" id="newclick"&gt;NewClick&lt;/button&gt;&lt;ul class="li"&gt; &lt;li&gt;原先的HTML元素on&lt;button class="deleteon"&gt;Delete&lt;/button&gt;&lt;/li&gt; &lt;li&gt;原先的HTML元素click&lt;button class="deleteclick"&gt;Delete&lt;/button&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt;&lt;script&gt;$("#newclick").click(function(){ $(".li").append('&lt;li&gt;动态添加的HTML元素click&lt;button class="deleteclick"&gt;Delete&lt;/button&gt;&lt;/li&gt;'); });$("#newon").click(function(){ $(".li").append('&lt;li&gt;动态添加的HTML元素on&lt;button class="deleteon"&gt;Delete&lt;/button&gt;&lt;/li&gt;'); });$(".delete").click(function(){ $(this).parent().remove(); }); //删除选中元素$(".li").on('click', ".deleteon", function(){$(this).parent().remove(); })//看看,删除不了吧$(".deleteclick").click(function(){ $(this).parent().remove(); });&lt;/script&gt;&lt;/html&gt;
  1. onclick的用法(jquery、jquery 原生)
关于用法,上面已经介绍了,这个也是我今天才知道的,原来在绑定事件的时候就可以加入元素,而我竟然转到了原生,一看就很菜,小白啊小白。

状况总结

动态元素绑定用on(),静态元素绑定两者都可以,为了代码的统一还是都用on()吧,切记,on('click',param1,param2,callback)可以筛选元素哦!!!

原文地址:https://segmentfault.com/a/1190000016713781


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364587.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php教程哪个软件好,写php用哪款软件好?解决方法

写php用哪款软件好&#xff1f;现在用php-eclipse&#xff0c;但是感觉不太好用js、html、css的提示功能没有&#xff0c;要装插件&#xff0c;装了很久没装上。想问一下现在开发php哪款软件好大家指导一下&#xff0c;谢谢------解决方案--------------------如果要js、html、…

循环数组对象 php,PHP循环遍历stdClass对象的数组

我有一个在MySQL中运行的查询,它返回一个结果作为stdClass对象,如下所示&#xff1a;array(8){[0]>object(stdClass)#36(1){["color"]>string(7)"#a0a0a0"}[1]>object(stdClass)#35(1){["color"]>string(7)"#e0e0e0"}[2]&…

js实现复制粘贴功能

在项目中使用到复制粘贴功能&#xff0c;虽然网上有很多大牛封装了很多的插件&#xff0c;但是还是想不去使用插件&#xff0c;就像自己来实现这个功能。 初步想法&#xff1a; 1. 获取到需要复制的内容&#xff0c;这里我可以将需要复制的内容放在input或者textarea的value中&…

Thymeleaf与Spring集成(第1部分)

1.引言 本文重点介绍如何将Thymeleaf与Spring框架集成。 这将使我们的MVC Web应用程序能够利用Thymeleaf HTML5模板引擎&#xff0c;而不会丢失任何Spring功能。 数据层使用Spring Data与mongoDB数据库进行交互。 该示例包含在酒店的单页Web应用程序中&#xff0c;从中我们可以…

html注释快捷键

1.选中需要注释的内容--->ctrlshift/ 2.取消注释--->ctrlshift\ 转载于:https://www.cnblogs.com/wyhluckdog/p/10131898.html

Java中转发(Forward)和重定向(Redirect)的区别

从URL来说&#xff0c;转发的地址栏没有发生改变&#xff0c;而重定向则是新的URL从数据共享来说&#xff0c;转发可以共享request域里面的数据&#xff0c;而重定向则不能。效率来说转发效率高&#xff0c;重定向效率低转发一般用来登陆后转发到对应模块&#xff0c; 重定向一…

oracle 老白,老白学编程 - Netdata学习 - numa

Numa 介绍NUMA,即Non-Uniform Memory Access Architecture&#xff0c;非统一内存访问架构。背景传统的SMP中&#xff0c; 所有处理器共享系统总线&#xff0c;当cpu数目增大时&#xff0c; 系统总现竞争就相应增加&#xff0c;会成为系统的瓶颈&#xff0c;所以SMP系统的CPU数…

几个非常实用的JQuery代码片段

jQuery是一个兼容多浏览器的javascript库&#xff0c;核心理念是write less,do more(写得更少,做得更多)。jQuery使用户能更方便地处理HTML&#xff08;标准通用标记语言下的一个应用&#xff09;、events、实现动画效果&#xff0c;并且方便地为网站提供AJAX交互。jQuery还有一…

编码的喜悦……以及Java中的变异测试

多年以来&#xff0c;为源代码编写单元测试一直是一种好习惯。 并且还可以使用测试覆盖率报告来查看测试覆盖了多少代码。 尽管行分支覆盖率报告非常有用&#xff0c;但是它并不能告诉您单元测试的实际效果。 因此&#xff0c;甚至在测试中没有一个断言的情况下&#xff0c;甚至…

错误1083:配置成在该可执行程序中运行的这个服务不能执行该服务 【解决办法】...

一直好用的服务程序&#xff0c;今天遇到这个问题&#xff0c;搜了一下各位给出的解决办法&#xff1b; 1.程序里多添加serviceInstaller组件的&#xff0c;然而我并没改代码&#xff0c;也没重新编译&#xff0c;不是解决我问题的办法&#xff1b; 2.修改注册表的&#xff0c;…

oracle 更改启动内存,Oracle 11gR2修改内存参数后无法启动问题

Microsoft Windows [版本 6.1.7600]版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\windows\system32>net start oracleserviceorclOracleServiceORCL 服务正在启动 ......OracleServiceORCL 服务已经启动成功。C:\windows\system32>sqlplus / as sysdbaSQL…

查看所有shell类型

[xfxuexi ~]$ cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh 具体你使用的是那一个&#xff0c;取决于你的用户配置&#xff0c;可以在/etc/passwd文件查看最后一个字段 [xfxuexi ~]$ head -1 /etc/passwd…

Vue—事件修饰符

Vue事件修饰符 Vue.js 为 v-on 提供了事件修饰符来处理 DOM 事件细节&#xff0c;如&#xff1a; event.preventDefault() 或 event.stopPropagation()。Vue.js通过由点 (.) 表示的指令后缀来调用修饰符。 .stop.prevent.capture.self.once <!-- 阻止单击事件冒泡 -->…

如何安装 Angular CLI 并且检查 CLI 的版本

想在系统中安装 Angular CLI &#xff0c;如何进行安装并且如何检查 CLI 的版本&#xff1f; 可以使用命令&#xff1a; npm install -g angular/cli 进行安装。 使用命令 ng version 来查看 Angular 的 CLI 的版本 转载于:https://www.cnblogs.com/huyuchengus/p/10879166.htm…

与Maven和Docker的集成测试

Docker是其中的新热点之一。 与传统虚拟机相比&#xff0c;它具有一套不同的技术和思想&#xff0c;并通过容器的思想实现了相似但同时又有所不同的事物&#xff1a;几乎所有VM都具有强大的功能&#xff0c;但速度更快&#xff0c;并且具有非常有趣的附加功能。 在本文中&…

oracle转mysql总结经验,oracle转mysql总结(转)

ares-sdk初始开发测试使用的是oracle数据库&#xff0c;由于宁波通商的特殊需要&#xff0c;必须把数据库环境从oracle转向mysql。 现对转换过程中出现的问题及经验总结如下&#xff1a;主键生成策略创建一个专门记录序列的表sequence,记录有当前序列号,序列的间隔如1创建记录当…

vue 顶级组件

快 有时候懒的把一些通用组件写到 template里面去&#xff0c;而业务中又需要用到&#xff0c;比如表示 loading状态这样组件。如果是这样的组件&#xff0c;可以选择把组件手动初始化&#xff0c;让组件在整个app生命周期中始终保持活跃。 如&#xff1a; // a.js import Vu…

2018-2019-2 网络对抗技术 20165329 Exp 8 Web基础

2018-2019-2 网络对抗技术 20165329 Exp 8 Web基础 原理与实践说明 实践内容概述基础问题回答实践过程记录 1.Web前端&#xff1a;HTML2.Web前端&#xff1a;javascipt3.Web后端&#xff1a;MySQL基础4.Web后端&#xff1a;编写PHP网页5.最简单的SQL注入&#xff0c;XSS攻击测试…

为JVM分配内存:一个案例研究

这篇文章是关于最近的性能调整练习的。 与往常一样&#xff0c;这些开始于关于症状的模糊表述。 这次&#xff0c;魔鬼采取了“应用程序速度慢&#xff0c;我们无法访问源代码的形式。 我们有什么改善情况的选择”。 对该应用程序进行仔细研究后发现&#xff0c;它由捆绑在一起…

洛谷P4822 冻结

题目描述 “我要成为魔法少女&#xff01;” “那么&#xff0c;以灵魂为代价&#xff0c;你希望得到什么&#xff1f;” “我要将有关魔法和奇迹的一切&#xff0c;封印于卡片之中„„” 在这个愿望被实现以后的世界里&#xff0c;人们享受着魔法卡片&#xff08;\(SpellCard\…