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 相关文章推荐
提高代码性能技巧谈—以创建千行表格为例
Jul 01 Javascript
jquery.validate使用攻略 第五步 正则验证
Jul 01 Javascript
JS获取IP、MAC和主机名的五种方法
Nov 14 Javascript
extjs4 treepanel动态改变行高度示例
Dec 17 Javascript
JS版元素周期表实现方法
Aug 05 Javascript
JavaScript实现表格快速变色效果代码
Aug 19 Javascript
js实现按钮颜色渐变动画效果
Aug 20 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
Apr 30 Javascript
简单实现js间歇或无缝滚动效果
Jun 29 Javascript
Vue.js每天必学之过渡与动画
Sep 06 Javascript
详解微信小程序 template添加绑定事件
Jun 23 Javascript
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
Apr 13 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反射学习入门示例
2019/06/14 PHP
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
2013/11/30 Javascript
两个select多选模式的选项相互移动(示例代码)
2014/01/11 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
详解JavaScript UTC时间转换方法
2016/01/07 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
Vue自定义指令详解
2017/07/28 Javascript
ReactNative之FlatList的具体使用方法
2017/11/29 Javascript
详解VUE 数组更新
2017/12/16 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
python中MySQLdb模块用法实例
2014/11/10 Python
在Python中使用SimpleParse模块进行解析的教程
2015/04/11 Python
Python字符串匹配算法KMP实例
2015/07/18 Python
python 接口返回的json字符串实例
2018/03/27 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
学习Python列表的基础知识汇总
2020/03/10 Python
Python异常处理机制结构实例解析
2020/07/23 Python
Python多线程的退出控制实现
2020/08/10 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
联想加拿大官方网站:Lenovo Canada
2018/04/05 全球购物
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
英国行业制服供应商:Alexandra
2019/09/14 全球购物
华为python面试题
2016/05/03 面试题
个人素质的自我评价分享
2013/12/16 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
行政处罚告知书
2015/07/01 职场文书
交流会主持词
2015/07/02 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书