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 相关文章推荐
刷新时清空文本框内容的js代码
Apr 23 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
Aug 01 Javascript
jQuery遍历Table应用示例
Apr 09 Javascript
显示今天的日期js代码(阳历和农历)
Sep 30 Javascript
jQuery动态修改超链接地址的方法
Feb 13 Javascript
JavaScript处理解析JSON数据过程详解
Sep 11 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
Dec 03 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
May 31 Javascript
检查表单元素的值是否为空的实例代码
Jun 16 Javascript
基于JS模仿windows文件按名称排序效果
Jun 29 Javascript
利用Jquery队列实现根据输入数量显示的动画
Sep 01 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
Apr 27 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/03/11 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
Yii全局函数用法示例
2017/01/22 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)
2013/01/24 Javascript
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
jQuery中:focus选择器用法实例
2014/12/30 Javascript
整理Javascript数组学习笔记
2015/11/29 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
2018/08/10 Javascript
js实现图片实时时钟
2020/01/15 Javascript
何时/使用 Vue3 render 函数的教程详解
2020/07/25 Javascript
Python FTP操作类代码分享
2014/05/13 Python
python自动化测试之setUp与tearDown实例
2014/09/28 Python
Python基于有道实现英汉字典功能
2015/07/25 Python
python线程、进程和协程详解
2016/07/19 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
Python 支付整合开发包的实现
2019/01/23 Python
python输入错误后删除的方法
2019/10/12 Python
分享8点超级有用的Python编程建议(推荐)
2019/10/13 Python
python多进程重复加载的解决方式
2019/12/13 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
2020/04/16 Python
Django model.py表单设置默认值允许为空的操作
2020/05/19 Python
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
运动会四百米广播稿
2014/01/19 职场文书
教师个人剖析材料
2014/02/05 职场文书
2014年协会工作总结
2014/11/22 职场文书
2015年幼儿园班主任工作总结
2015/05/12 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python