博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js性能优化-事件委托(2)
阅读量:4684 次
发布时间:2019-06-09

本文共 2026 字,大约阅读时间需要 6 分钟。

       
js性能优化
  • 设置管理员
  • 取消管理员
$(".e1").on("click",function(){
$(this).removeClass("e1").addClass("e2").html("取消管理员"); }); $(".e2").on("click",function() {
$(this).removeClass("e2").addClass("e1").html("设置管理员"); });
   需求:点击第一个li后,class里面的e1变成e2,文字变成取消管理员。第二次点击第一个li后,class里的e2变成e1,文字变成设置管理员。 问题:一开始我如上所示,用JQ写的,但是发现随着class的变化,绑定的事件并没有伴随着一起。当变化class后,事件没了。 解决办法:JQ怎么解决我没有去探究,想了下还是用原生的算了,使用事件委托来处理,如下(上面的是个demo,下面的是项目里面直接考出来的,没有整理成demo,这样写更具代表性吧):
var dom = document.getElementById("list"); dom.addEventListener("click",function(){
var userId = $(event.target).parent().parent().find(".operatorid").val();//这里最开始我失误用的是$(this),打印出来后才发现这个this是指向的委托元素,导致这个id始终不变,改成event.target就行了。 switch(event.target.classList[2]){
case "e1": var json = {"userId":userId,"isAutSystem":1}; $.ajax({
type:"post", async:false, url:"autveAutSystem.action", data:json, datatype:"text", success:function(data){
if(data.isOk == true){
event.target.innerHTML = "取消管理员"; event.target.classList.remove("e1"); event.target.classList.add("e2"); } } }); break; case "e2": var json = {"userId":userId,"isAutSystem":0}; $.ajax({
type:"post", async:false, url:"autveAutSystem.action", data:json, datatype:"text", success:function(data){
if(data.isOk == true){
event.target.innerHTML = "设置管理员"; event.target.classList.remove("e2"); event.target.classList.add("e1"); } } }); break; } });

转载于:https://www.cnblogs.com/yuan-ye/p/4810806.html

你可能感兴趣的文章
IIS的ISAPI接口简介
查看>>
python:open/文件操作
查看>>
16 乘法口诀输出
查看>>
mac 常用地址
查看>>
鼠标经过切换图片
查看>>
流程控制 Day06
查看>>
Linux下安装Tomcat
查看>>
windows live writer 2012 0x80070643
查看>>
C程序的启动和终止
查看>>
asp.net web 定时执行任务
查看>>
tomcat 和MySQL的安装
查看>>
11.5 内部类
查看>>
Cosine Similarity
查看>>
浅谈JAVA集合框架
查看>>
halt和shutdown 的区别
查看>>
git常用操作
查看>>
京东SSO单点登陆实现分析
查看>>
render()方法是render_to_response
查看>>
u-boot启动第一阶段
查看>>
北京大学2019年数学分析考研试题
查看>>