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 相关文章推荐
在多个页面使用同一个HTML片段《续》
Mar 04 Javascript
js确认框confirm()用法实例详解
Jan 07 Javascript
基于jQuery实现二级下拉菜单效果
Feb 01 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
Jul 12 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
Dec 29 Javascript
vue 纯js监听滚动条到底部的实例讲解
Sep 03 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
Dec 11 Javascript
vue 引用自定义ttf、otf、在线字体的方法
May 09 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
Sep 26 Javascript
Vue.js组件props数据验证实现详解
Oct 19 Javascript
Node.js实现批量下载图片简单操作示例
Jan 18 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
Aug 22 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程序
2006/10/09 PHP
详解PHP导入导出CSV文件
2014/11/03 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
2019/11/09 PHP
PHP日期和时间函数的使用示例详解
2020/08/06 PHP
JavaScript类库D
2010/10/24 Javascript
javascript 二进制运算技巧解析
2012/11/27 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
提取字符串中年月日的函数代码
2013/11/05 Javascript
jQuery地图map悬停显示省市代码分享
2015/08/20 Javascript
zTree树形插件异步加载方法详解
2017/06/14 Javascript
jquery对table做排序操作的实例演示
2017/08/10 jQuery
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
Python中将字典转换为XML以及相关的命名空间解析
2015/10/15 Python
python 日志增量抓取实现方法
2018/04/28 Python
Django model反向关联名称的方法
2018/12/15 Python
python实现弹窗祝福效果
2019/04/07 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
浅谈html5 video 移动端填坑记
2018/01/15 HTML / CSS
香港唯港荟酒店预订:Hotel ICON
2018/03/27 全球购物
加热夹克:RAVEAN
2018/10/19 全球购物
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
优秀生推荐信范文
2013/11/28 职场文书
宣传保护环境的公益广告词
2014/03/13 职场文书
青年志愿者活动方案
2014/08/17 职场文书
小学校园文化建设汇报材料
2014/08/19 职场文书
法人代表证明书
2014/09/18 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
2016年教师党员承诺书范文
2016/03/24 职场文书
导游词之嵊泗列岛
2019/10/30 职场文书
python通配符之glob模块的使用详解
2021/04/24 Python
python异常中else的实例用法
2021/06/15 Python
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫