js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码


Posted in Javascript onMay 13, 2016

今天遇到一个很奇葩的需求,是这样的:当我点击文字的时候弹出一个删除按钮,可以删除刚才点击的文字.

诶?当时想了想,没什么难度吧.可是,既然是奇葩的需求怎么可能这么简单.

对,还有一个功能.我并不知道我点了哪个标签,英文可以承载文字的标签太多太多....

当时我tm就懵逼了.你都不知道要点哪个标签,我怎么去绑定事件?给谁绑定事件?  扯了半天,还是要写.于是就动工了.

我思路是这样的:

START

1,首先得获取鼠标点击的对象.(问题是...我怎么知道点了哪个)

那么先写个函数去获取鼠标点击的对象吧

js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码

 

get_tag这个函数被绑定在body的onclick事件上,然后接受了一个event参数;

然后event对象有个target属性,是可以直接获取鼠标点击的对象.

我们log看看

js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码

 

恩,可以的.和预先的思路一致.得到了想要的结果.

2, 得到对象.可是要怎么删除呢?

var del_tag = function(){
    var tag=null;
    return {
      get:function(e){
        tag = e;
      },
      del:function(){
        $(tag).remove();
      }
    }
  }

由于删除按钮和我们鼠标所点击的对象并没有什么联系.所以我们得写个闭包,声明一个tag去保存我们所点击的对象.

然后返回两个函数,一个get.用来获取鼠标上次点击的对象.一个是del.顾名思义,删除点击的对象.

由于是闭包,所以tag会被保存到内存中.正好实现所要的功能.

3. 二者结合

var del_tag = function(){
    var tag=null;
    return {
      get:function(e){
        tag = e;
      },
      del:function(){
        $(tag).remove();
      }
    }
  }

  var dt = del_tag();//把del_tag赋值给dt


  function get_tag(e){
    var ele = e.target;
    //调用dt.get() 参数就是get_tag函数event参数的值的target
    dt.get($(ele));
  }

  $('#del').click(function(){    
    //这里,由于创建了闭包.我们上次点击的对象被保存了起来.
    //所以这里可以直接调用dt.del() 删除对象
    dt.del();
  })

4.看看效果

js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码

 

js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码

5.效果还不错.可是..随便点击某个对象都可以删除.这是不是就乱套了?接着改

var del_tag = function(){
    var tag=null;
    return {
      get:function(e){
        tag = e;
      },
      del:function(){
        $(tag).remove();
      }
    }
  }

  var dt = del_tag();//把del_tag赋值给dt


  function get_tag(e){

    var ele = e.target;
    $(ele).css('border','1px solid red')
    var tagname = ele.tagName;
    //定义一个tag数组. 用来存储我们想删除的对象
    var tagarr = ['SPAN','H1','H2','H3','H4','H5','H6','P'];
    //判断如果我们点击的对象 是不是我们数组里所声明的,可以删除的.
    if(tagarr.indexOf(tagname) > -1){      
      //调用dt.get() 参数就是get_tag函数event参数的值的target
      dt.get($(ele));
    }  
    
  }

  $('#del').click(function(){  
    
    //这里,由于创建了闭包.我们上次点击的对象被保存了起来.
    //所以这里可以直接调用dt.del() 删除对象
    dt.del();
  })

看看效果:

js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码

恩恩.看来对了.不是我们所定义的对象就不可以删除.

虽然和需求上说的删除文字有点区别.但是只要你告诉我你会用那些标签去承载文字.我就可以删除...

强调一下.我们的get_tag()函数可以别放在body或者html的onclick事件上.不然整个页面的文字一点就删除了....

get_tag()函数就绑定在你想删除文字那块div上.

以上这篇js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery实现三层遍历删除功能代码
Apr 23 Javascript
jquery跟js初始化加载的多种方法及区别介绍
Apr 02 Javascript
jquery实现的动态回到顶部特效代码
Oct 28 Javascript
微信小程序 location API实例详解
Oct 02 Javascript
AngularJS service之select下拉菜单效果
Jul 28 Javascript
vue实现图书管理demo详解
Oct 17 Javascript
javaScript产生随机数的用法小结
Apr 21 Javascript
Vue头像处理方案小结
Jul 26 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
Jul 10 jQuery
微信小程序封装分享与分销功能过程解析
Aug 13 Javascript
小程序点击图片实现png转jpg
Oct 22 Javascript
原生JS实现留言板
Mar 26 Javascript
最简单的tab切换实例代码
May 13 #Javascript
浅析创建javascript对象的方法
May 13 #Javascript
全面理解JavaScript中的闭包
May 12 #Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
May 12 #Javascript
Node.js的项目构建工具Grunt的安装与配置教程
May 12 #Javascript
js自定义select下拉框美化特效
May 12 #Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
May 12 #Javascript
You might like
php实现的漂亮分页方法
2014/04/17 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
2016/09/26 PHP
Laravel框架控制器的middleware中间件用法分析
2019/09/30 PHP
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
jQuery实现拖拽效果插件的方法
2015/03/23 Javascript
jQuery实现文本展开收缩特效
2015/06/03 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
javascript实现动态标签云
2015/10/16 Javascript
jquery跟随屏幕滚动效果的实现代码
2016/04/13 Javascript
必备的JS调试技巧汇总
2016/07/20 Javascript
jQuery UI实现动画效果代码分享
2018/08/19 jQuery
详解Axios统一错误处理与后置
2018/09/26 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
原生JS实现留言板功能
2020/02/08 Javascript
JS性能优化实现方法及优点进行
2020/08/30 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
Python yield 使用浅析
2015/05/28 Python
Python下调用Linux的Shell命令的方法
2018/06/12 Python
python实现周期方波信号频谱图
2018/07/21 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
Python实现多线程/多进程的TCP服务器
2019/09/03 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
python3 中使用urllib问题以及urllib详解
2020/08/03 Python
HTML5注册表单的自动聚焦与占位文本示例代码
2013/07/19 HTML / CSS
介绍一下Make? 为什么使用make
2013/12/08 面试题
会计岗位说明书
2014/07/29 职场文书
新闻学专业职业生涯规划范文:我的人生我做主
2014/09/12 职场文书
董事长秘书工作总结
2015/08/14 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
事业单位工作人员岗前培训心得体会
2016/01/08 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
CSS 文字装饰 text-decoration & text-emphasis 详解
2021/04/06 HTML / CSS